Elementos repetidos

5 respostas
gustavodelgado

Pessoal… preciso retornar uma coleção sem elementos repetidos.
Eu sei que usando-se um Set, ele não permite que objetos repetidos sejam inseridos, porém:

  • Vou inserindo elementos, conforme eles chegam do resultado de selects;
  • Um select me retorna uma lista, pego os elementos e jogo neste Set;
  • Outro select me retorna outra lista, e também devo jogar os resultados no Set.

Se o segundo select retornar um elemento que já havia sido retornado no primeiro, ele não deve ser inserido, porém, como são “objetos diferentes” mas com os atributos com o mesmo valor, ele insere… como posso fazer para detectar se já existe um objeto com os mesmos valores no Set, para que ele não insira novamente?

5 Respostas

rodrigo_gomes

Olá,

Você pode implementar os métodos equals e hashCode adequadamente.

[]´s
Rodrigo

T

Se seu elemento não for uma String ou um wrapper, então você tem de definir corretamente hashCode e equals (no caso de você usar um HashSet ou Hashtable) ou então compareTo e equals (no caso de você usar um TreeSet). Senão vai haver esse problema com elementos repetidos.

Procure no fórum dicas como implementar corretamente esses métodos.

gustavodelgado

rodrigo_gomes:
Olá,

Você pode implementar os métodos equals e hashCode adequadamente.

[]´s
Rodrigo

Tem algum exemplo dessa implementação??
Obrigado.

ozielneto

Aqui você tem o tutorial de Collections
http://java.sun.com/docs/books/tutorial/collections/

Aqui você cerá um exemplo:
http://java.sun.com/docs/books/tutorial/collections/interfaces/order.html

At,

ramilani12

Um exemplo com TreeSet

Segue em anexo

Criado 12 de dezembro de 2006
Ultima resposta 12 de dez. de 2006
Respostas 5
Participantes 5