packageteste;importjava.util.ArrayList;importjava.util.List;publicclassMain{publicstaticvoidmain(String[]args){List<Objeto>lista=newArrayList<Objeto>();Objetoobj1=newObjeto();obj1.setId(10);obj1.setNome("Jose");lista.add(obj1);Objetoobj2=newObjeto();obj2.setId(10);obj2.setNome("Carlos");if(obj1.equals(obj2))System.out.println("Não insere na lista!!!");elselista.add(obj2);}}
Andre_Fonseca
Ops, se vc quiser procurar na lista pode fazer isso:
int id;
int id_busca=10;
boolean insere=true;
for (Objeto objeto : lista) {
id = objeto.getId();
if (id_busca == id) insere = false;
}
[]´s
world_fernando
Blz André quase lá mas não tenho como filtrar né sem fazer o for ou while com a condição, tipo eu conseguiria fazer sem problemas usando como vc mostrou e add em outro arraylist, é que pensei que poderia somente filtrar sabe e depois ir adicionar mais filtros fazendo pesquisas mais complexas, assim fazendo em um unico array nao consumiria tanta memoria da maquina
Andre_Fonseca
Coloca um exemplo ai de como você gostaria de fazer, acho que o jeito mais fácil é interagir na lista mesmo…
sergiotaborda
world_fernando:
Opa ,
Seguinte pessoal estou com uma dúvida bem básica, Ex:
Techo uma Classe
Num list vc tem que usar um filtro. Mas pode usar um Map para o caso do ID.
O idieal é que vc construa um objeto que é iterável e filtrável e se comporta como um Map para o caso de um campo em particular
interfaceFilter{publicbooleanaccept(Objectobj);}interfaceMapped{publicObjectgetKey(Objectobj);}classCacheimplementsIteratable{Mapmap=newHashMap();Mappermapper;publicCache(Mappermapper){this.mapper=mapper;}publicvoidadd(Objectobj){map.put(mapper.getKey(obj),obj);}publicIteratoriterate(){returnmap.values.iterator()}publicListfilter(Filterfilter){Listres=newLinkedList();for(Objecto:this){if(filter.accept(o)){res.add(o);}}returnres;}}// uso Mapperm=newMapper(){publicObjectgetKey(Objectobj){returnnewInteger(((Test)obj).id);}}Cachecache=newCache(m);cache.add(newTest());cache.filter(newFilter(){publicbooleanaccept(Objectobj){return((Test)obj).id==5;}});
Vc pode usar o padrão composite para criar filtros mais complexos.
Pode usar Generics para deixar o codigo mais limpo.
Pode criar Mappers que procuram por campos com annotação especifica (@Key, por exemplo)
etc…