Busca em arraylist de Object

3 respostas
javaarraylist
L

Eu tenho uma arraylist, onde eu cadastro nome, email, cpf.
Eu insiro o cpf, e faço uma busca nesta arraylist para ela me retornar a posição
na qual eu cadastrei o cpf.
POrem, do jeito que estou fazendo, retorna apenas o primeiro cpf da posicao 0

Como faco para buscar o array todo?
Segue o que eu fiz:

// nome da lista: clients
// int index = 0;
for (int i = 0; i < clients.size(); i++) {
            if (clients.get(i).getCpf().equals("[telefone removido]")) {
                
                index = clients.indexOf(i);
          }
}

3 Respostas

igomes

se vc quer apenas retornar a posição, assim que entrar no if, vc pega o valor de i.
não precisa de index of

L

o problema é que quando entra no for, ele faz o loop so do primeiro item da arraylist , e mesmo que eu coloque um cpf que esta cadastrado, ele diz que nao esta

peczenyj

vamos la

a primeira coisa que devemos fazer quando estamos procurando algo é definir como vamos encontrar.

por exemplo, vc tem um .getCpf: isso retorna uma String?

segundo, vc garante que sempre havera 0 ou 1 clientes com este CPF? e se houverem 2? vc quer TODOS ou só o primeiro?

Isso é importante pq List não garante a unicidade.

agora vamos la, o que acontece se vc procurar e não achar ninguem? retorna -1? lança exception? pq 0 é um valor bem… valido pra uma lista. significa o primeiro elemento. se vc inicia uma variavel assim com 0, por padrão ele pode falar que esta la. cuidado.

agora vamos olhar dentro do seu if. se vc quer a posição vc não precisa do indexOf.

indexOf recebe um OBJETO e vai procurar qual a posição daquele objeto. vc ja tem a posição, que é i, como o colega @igomes ja mencionou.

agora… uma vez que vc encontrou, vc quer continuar com o loop? pq isso pode ser inutil, certo? vc ja achou… se for o caso coloca um break; apos guardar a posição no index e isso vai interromper o loop e retornar mais rapido pra vc.

melhor ainda: vc pode colocar um return i; dentro do if.

Criado 14 de novembro de 2016
Ultima resposta 14 de nov. de 2016
Respostas 3
Participantes 3