Lista sem repetição  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
crisadias
Entusiasta Java

Membro desde: 09/05/2005 10:59:04
Mensagens: 18
Localização: Rio de Janeiro - RJ
Offline

Bom dia,
alguém pode me dar uma dica. Estou usando um objeto List pra armazenar uma lista de objetos de banco de dados, mas surgiu a necessidade de impedir a repetição de elementos. Tem alguma técnica pra eu fazer isso, algum objeto compativel com list que facilite a lista sem repetição?

Um abraço.

Cristiano Araujo Dias
Desenvolvedor de Soluções
Rio de Janeiro - RJ
[Yahoo!] [MSN]
jgbt
GUJ Master
[Avatar]

Membro desde: 04/06/2003 15:01:48
Mensagens: 1286
Localização: Porto Alegre/RS
Offline

use um Set ao inves de um List.

[]'s

João Bier
Desenvolvedor Java
[Email]
Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

Lembrando que, ao usar Set, voce precisa implementar os metodos equals() e hashCode()

Rafael

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

dependendo do Set nao vai precisar de hashCode, mas ja eh uma boa.
crisadias, use java.util.HashSet, interfaceado pela Set como ja falaram.

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
marcioa1
Virtual Machine Man
[Avatar]

Membro desde: 29/11/2003 12:52:10
Mensagens: 736
Localização: Valinhos-SP
Offline

Olá,

O set é mais indicado, mas existe ainda o List.contains(Object o), que diz se um objeto já está na lista. Acho que para isto é preciso reescrever equals e hashCode().

Márcio

SCJP 1.4,
[Email]
crisadias
Entusiasta Java

Membro desde: 09/05/2005 10:59:04
Mensagens: 18
Localização: Rio de Janeiro - RJ
Offline

Pessoal,
posso então continuar usando o List e fazer a comparação com .contains desde que reescreva o método equals() do meu objeto, certo? É a melhor solução no caso.

Valeu pela ajuda.

Cristiano Araujo Dias
Desenvolvedor de Soluções
Rio de Janeiro - RJ
[Yahoo!] [MSN]
rafael.pereira
Thread.start()

Membro desde: 02/12/2004 21:50:58
Mensagens: 32
Offline

Lembre-se que para reescrever equals() e hashCode() você tem que garantir algumas coisas para que sua classe fique consistente.
Objetos considerados iguais pelo método equals() precisam necessariamente possuir o mesmo hashCode().
Objetos diferente não necessariamente precisam ter hashCode() diferentes.

Rafael Pereira
--------------------------------------------
http://www.2ks.com.br
[WWW] [Yahoo!] [MSN] [ICQ]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Paulo Silveira wrote:dependendo do Set nao vai precisar de hashCode, mas ja eh uma boa.
crisadias, use java.util.HashSet, interfaceado pela Set como ja falaram.


Dependendo do Set? Hmm, ou ele é feito com hashing e precisa do hashCode, ou é feito usando arvores, ai precisa do Comparable, um contrato beeeem mais dificil de implementar.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Alguém precisa disponibilizar aqui um Comparator "genérico". Alguma coisa que fosse usada assim:

Digamos que você tivesse um TreeSet de ClienteVO, onde ClienteVO tem os seguintes atributos: double salario, String nome, String sobrenome.



Não é difícil de escrever (nada que um pouco de reflection não resolva) mas dá trabalho...
[WWW]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Fiz algo semelhante (precisa de refatoração @.@)

This message was edited 1 time. Last update was at 11/05/2005 15:30:15


Former LIPE.
[ICQ]
takeshi10
Java Ninja

Membro desde: 08/08/2004 23:05:25
Mensagens: 254
Localização: Brasil
Offline

ops escrevi no topico errado... mod poderia apagar isso aki?

This message was edited 1 time. Last update was at 05/07/2005 16:46:56


takeshi
tads
JavaGuru
[Avatar]

Membro desde: 12/08/2003 15:10:59
Mensagens: 230
Offline

Bom dia,

Estou tentando implementar um Comparator genérico ond eu passo
um vetor de strings ou talvez uma lista de strings que são os atributos pelos quais eu vou ordenar.
Já tenho um comparator que é usado apenas para um atributo:



Porém, como fazer daki em diante?
Se alguém puder dar uma dica...

valew

Tads
[MSN]
tads
JavaGuru
[Avatar]

Membro desde: 12/08/2003 15:10:59
Mensagens: 230
Offline

Blz?

encontrei uma solução muito legal sobre fazer este tipo de ordenação,
usando o ComparatorChain do org.apache.commons.collections.comparators.

Segue um exemplo:



Ond primeiramente ordena por name, depois por ojectId.


Tads
[MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team