Alguem sabe algum metodo que busca em uma lista ordenada um objeto e se caso encontre retorne esse objeto?
obrigada
Busca em uma lista
9 Respostas
Se a lista estiver ordenada, use binarySearch
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
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, orlist.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?
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?
Como assim a partir de um parametro? Seria seuObjetoDaLista.getNome() por exemplo?
Isso
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
}
}
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