Alguém sabe se tem algum tipo de Colecao q nao armazena 2x o mesmo valor? Ex.: se eu tentar gravar ‘1’ e ‘1’, provavelmente vai inserir 2x. Tem como evitar isso?
Alguém sabe se tem algum tipo de Colecao q nao armazena 2x o mesmo valor? Ex.: se eu tentar gravar ‘1’ e ‘1’, provavelmente vai inserir 2x. Tem como evitar isso?
Use Sets, que são coleções não admitem elementos repetidos.
Inté.
xandevieira
tem sim:
java.util.Set;
Djonatah
O Colega citou bem - collections que implementam a interface Set não permitem elementos com valores duplicados… (TreeSet, HashSet, e LinkedHashSet são as que eu conheço).
Se você não quer identificadores (Keys) repetidos use collections que implementam a interface Map
<><
P
padcoe
Mas eu dou new no Objeto e seto um campo dele…por isso q eu percorri novamente a lista…cada vez q eu der new no objeto, ele vai ter um ‘id’ diferente e não vai dar q o objeto é igual, certo?
Djonatah
Eu não entendi a pergunta [:D]
O que você está chamdno do “ser igual” - dois objetos sãoi iguais quando o método equals() retorna true.
As 2 Galinhas possuem o mesmo Id, mas são objetos diferentes. É exatamente isso que estou enfrentando, eu queria saber se tem alguma forma de eu evitar inserir 2x o objetos diferentes mas com o mesmo valor?
Eu to tendo que percorrer a lista 2x, será que usar um Map e setar o Id como Key, resolveria?
[]'s
xandevieira
usa HashMap e use o id como chave
Djonatah
Se você não quer IDs iguais você pode sim usar uma HashMap, e como o colega comentou usando o o ID como chave (considerando que ID é um inteiro )
As 2 Galinhas possuem o mesmo Id, mas são objetos diferentes. É exatamente isso que estou enfrentando, eu queria saber se tem alguma forma de eu evitar inserir 2x o objetos diferentes mas com o mesmo valor?
Eu to tendo que percorrer a lista 2x, será que usar um Map e setar o Id como Key, resolveria?
[]'s
Já que para você 2 galinhas são iguais quando possuem o mesmo id, então basta você:
Implementar o método equals da classe Galinha que retorna true se os ids são iguais.
Ao invés de usar List/ArrayList, utilize Set/HashSet.
Ex.:
publicclassGalinha{//...publicbooleanequals(Objectgalinha){if(galinhainstanceofGalinha){returnthis.getId().equals((Galinha)galinha)).getId());//Se getId retorna um tipo primitivo, então troque por this.getId() == (Galinha)galinha)).getId()}else{returnfalse;}}//...}Setgalinhas=newHashSet();Galinhag1=newGalinha();g1.setId(1);galinhas.add(g1);Galinhag2=newGalinha();g2.setId(1);galinhas.add(g2);//Itera sobre galinhas e só vai ter uma...
Pode haver algum erro de compilação aí porque digitei daqui do fórum, mas o que vale é a idéia.
wm1
Apenas reafirmando o que já foi dito:
Tudo que for Set, implementa o conceito matemático de conjunto (somente um elemento com a mesmo significado semântico pode estar presente). Se o equals estiver implementado corretamente, não vai haver repetições.