Colecoes - como nao salver 2x o mesmo valor?  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
padcoe
Virtual Machine Man

Membro desde: 25/10/2008 07:30:15
Mensagens: 528
Offline

Opa

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?

Eu fiz um método meio tosco haha

This message was edited 2 times. Last update was at 17/12/2008 14:16:02

KWill
Virtual Machine Man
[Avatar]

Membro desde: 18/09/2006 10:05:46
Mensagens: 609
Offline

padcoe wrote:Opa

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é.

"Só estou certo de que não possuo outras certezas" - KWill
"Não penso, mas Googlo, logo existo!" - Geração Copy-Cola
avsouza
Virtual Machine Man
[Avatar]

Membro desde: 03/08/2007 13:04:42
Mensagens: 660
Localização: Florianópolis/SC
Offline

tem sim:


Alexandre Vieira de Souza
Djonatah
JavaGuru
[Avatar]

Membro desde: 11/05/2007 15:38:09
Mensagens: 204
Localização: São Bento do Sul - SC
Offline

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

<><


--------------------------------------------------
" Daria tudo o que sei, pela metade do que ignoro " - Descartes

" Tudo tem seu tempo, cada coisa tem sua ocasiao " - Eclesiastes 3
[MSN]
padcoe
Virtual Machine Man

Membro desde: 25/10/2008 07:30:15
Mensagens: 528
Offline

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
JavaGuru
[Avatar]

Membro desde: 11/05/2007 15:38:09
Mensagens: 204
Localização: São Bento do Sul - SC
Offline

Eu não entendi a pergunta []

O que você está chamdno do "ser igual" - dois objetos sãoi iguais quando o método equals() retorna true.

<><

--------------------------------------------------
" Daria tudo o que sei, pela metade do que ignoro " - Descartes

" Tudo tem seu tempo, cada coisa tem sua ocasiao " - Eclesiastes 3
[MSN]
padcoe
Virtual Machine Man

Membro desde: 25/10/2008 07:30:15
Mensagens: 528
Offline

Cara..simples:



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

This message was edited 1 time. Last update was at 18/12/2008 09:30:26

avsouza
Virtual Machine Man
[Avatar]

Membro desde: 03/08/2007 13:04:42
Mensagens: 660
Localização: Florianópolis/SC
Offline

usa HashMap e use o id como chave

Alexandre Vieira de Souza
Djonatah
JavaGuru
[Avatar]

Membro desde: 11/05/2007 15:38:09
Mensagens: 204
Localização: São Bento do Sul - SC
Offline

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 )


--------------------------------------------------
" Daria tudo o que sei, pela metade do que ignoro " - Descartes

" Tudo tem seu tempo, cada coisa tem sua ocasiao " - Eclesiastes 3
[MSN]
RafaelVS
JavaEvangelist
[Avatar]

Membro desde: 13/12/2006 09:50:16
Mensagens: 405
Localização: Recife - PE
Offline

padcoe wrote:Cara..simples:



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ê:

1. Implementar o método equals da classe Galinha que retorna true se os ids são iguais.
2. Ao invés de usar List/ArrayList, utilize Set/HashSet.

Ex.:



Pode haver algum erro de compilação aí porque digitei daqui do fórum, mas o que vale é a idéia.

- Mestrando em Engenharia de Software no CIn/UFPE;
- Pós-Graduado em Engenharia de Software na POLI/UPE;
- Bacharel em Ciência da Computação na UNICAP (Universidade Católica de Pernambuco);
- Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (score 95%);
- Sun Certified Web Components Developer for J2EE 1.4 Platform (score 89%)
wm
Smalltalk

Membro desde: 03/03/2007 10:23:16
Mensagens: 4
Offline

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.
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team