Busca em uma lista

9 respostas
oitathi

Alguem sabe algum metodo que busca em uma lista ordenada um objeto e se caso encontre retorne esse objeto?
obrigada

9 Respostas

E

Se a lista estiver ordenada, use binarySearch

A

Olha um exemplo aqui

oitathi

Então, eh q eu tenho uma lista de objetos do tipo NovosDados, e esse objeto, implementa a iterface comparable e eh formado de varias strings, entre elas o id ( que é o comparavel). Dai criei uma variavel do tipo NovosDados, e atribui a ela o resultado da minha pesquisa no bynarySerach. Porém, ele não reconhece o método (cannot find symbol). Alguem sabe como me ajudar?

List<NovosDados> listaDados = new LinkedList<NovosDados>();
NovosDados found;
found= Collections.binarySearch(listaDados,id);

tks

renamed

oitathi:
Então, eh q eu tenho uma lista de objetos do tipo NovosDados, e esse objeto, implementa a iterface comparable e eh formado de varias strings, entre elas o id ( que é o comparavel). Dai criei uma variavel do tipo NovosDados, e atribui a ela o resultado da minha pesquisa no bynarySerach. Porém, ele não reconhece o método (cannot find symbol). Alguem sabe como me ajudar?

List<NovosDados> listaDados = new LinkedList<NovosDados>();
NovosDados found;
found= Collections.binarySearch(listaDados,id);

tks

A busca binária da retornará um int, não o objeto NovosDados.

Returns:
index of the search key, if it is contained in the list; otherwise, (-(insertion point) - 1). The insertion point is defined as the point at which the key would be inserted into the list: the index of the first element greater than the key, or list.size(), if all elements in the list are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found.

Documentação aqui.

ok?

oitathi

Tah bem, então, novamente a pergunta: Como eu faço pra localizar o objeto apartir de um parametro em uma lista e daí então setar novos valores para esse objeto?

evertonsilvagomesjav

Como assim a partir de um parametro? Seria seuObjetoDaLista.getNome() por exemplo?

oitathi

Isso

evertonsilvagomesjav
oitathi:
Isso

E vc sabe qual é o objeto que vc quer achar? Tipo vc quer achar todos objetos que obtiverem um nome "Joao".

se for isso vc pode usar o método contains.

tipo assim:

for(Usuarios user : listUser){

if(user.getNome().contains("Joao")){
// faz suas alteraçoes
}

}
Hildebrando_Pedroni

Só explicando a resposta do evertonsilvagomesjava, vc vai ter que percorrer a lista e procurar o que vc quer.

Usuario usuario = new Usuario();

//para percorrer a lista
for(Usuarios user : listUser){
   if(user.getNome().contains("joao")){
      /*Se for o usuario que voce quer você pode fazer a manipulação que vc quizer aqui dentro
         chamar outro metodo etc.
          Aqui vc vai acessar todos os atributos do usuario atraves do user.
          Ou vc pode colocar ele em um objeto fora da lista assim:
      */
      usuario = user;
   }
}

Assim vc trabalha com os objetos da lista, modificando os seus valores acessando-os diretamente na lista, ou pode colocar
em um outro objeto, manipular e depois colocar em outra lista se quiser…

É isso.

Abraços

Criado 13 de julho de 2010
Ultima resposta 13 de jul. de 2010
Respostas 9
Participantes 6