[Resolvido] Procurar valor em ArrayList

7 respostas
J

Pessoal, tenho um ArrayList que contem uma lista de usuários.

Esse objeto usuário possui um ID, nome e tipo.

O que eu estou precisando é verificar se determinado ID já existe na lista, porém não estou conseguindo, pois não sei como fazer para procurar por determinado atributo dentro do ArrayList.

Poderiam me dar uma idéia?

Obrigado desde já.

7 Respostas

M

Esse ArrayList pode ter elementos repetidos? Se cada nome fosse único, ficaria mais fácil.
Vc tá lendo esse Array do banco de dados?

Supondo essas duas coisas que citei, vc poderia pegar a String (nome do usuário do qual vc deseja saber a id) e procurar no banco qual o id dele. Algo como:

SELECT id_usuario FROM usuarios WHERE nome='Dito';

E vc armazenaria esse id numa variável que vc criou na sua classe: private int idUsuarioSelecionado;
Ou seja, solução tabajara. Isso tem a ver com o que você quer?

J

marcelogro:
Esse ArrayList pode ter elementos repetidos? Se cada nome fosse único, ficaria mais fácil.
Vc tá lendo esse Array do banco de dados?

Supondo essas duas coisas que citei, vc poderia pegar a String (nome do usuário do qual vc deseja saber a id) e procurar no banco qual o id dele. Algo como:

SELECT id_usuario FROM usuarios WHERE nome='Dito';

E vc armazenaria esse id numa variável que vc criou na sua classe: private int idUsuarioSelecionado;
Ou seja, solução tabajara. Isso tem a ver com o que você quer?

Na verdade é assim. Eu preciso procurar se um valor já existe exatamente para evitar que existam valores repetidos.
Esses dados são provenientes de um arquivo em Excel, e serão inseridos em um banco de dados, porém preciso fazer umas validações antes, por isso preciso testar o valor pelo ArrayList mesmo e não através de um banco de dados.

W

Há algumas maneiras de fazer isso:

  1. Se você implementar o equals/hashCode do objeto para comparar pelo id, basta usar o método indexOf do ArrayList.

  2. Utilizar o método Collections.binarySearch. Você vai precisar ordenar a lista (com Collections.sort, por exemplo). Você também precisará definir um comparator que use o id.

  3. Desenvolver seu próprio algoritmo (basicamente percorrer os usuários e comparar o id).

E, por fim, se a sua coleção não pode assumir valores duplicados, leia sobre Set ao invés de usar List.

E

Eu faria assim:

public boolean verifica(int id){ boolean verifica = false; for(int x = 0; x < list.size(); x++){ if(this.list.get(x).getID() == id) verifica = true; } return verifica; }

Não teste mais acho que assim funcionona.

W

Você pode parar de procurar o elemento quando encontra o valor, Enadrov:

public boolean verifica(int id) {
   for each (Usuario u : usuarios) {
      if (u.getId() == id) {
         return true;
      }
   }
   return false;
}
E

Verdade wagnerfrancisco tem razão.

J

Pessoal, desculpe a demora em dar um retorno, mas estava bem ocupado e apenas vi as respostas e acabei nao respondendo.
Mas eu criei o algoritmo para percorrer a lista e comparar os itens já existentes.

Obrigado pela ajuda.

Criado 22 de julho de 2012
Ultima resposta 25 de jul. de 2012
Respostas 7
Participantes 4