Ordenação em um TreeSet

4 respostas
ramilani12

Olá pessoal,
tenho um HashMap com inúmeras referências em uma classe POJO quero ordernar essas referências pela data:

// Classe POJO

DiaTrabalhado

d.getData();

Antes de passar o hashMap para um TreeSet o tamanho do HashMap é 2 por exemplo após de ordenar pela data:

TreeSet ts = new TreeSet(new Comparator() 
{
	public int compare(Object a, Object b) 
	{
	    DiaTrabalhado d = (DiaTrabalhado) a;
	    DiaTrabalhado d1 = (DiaTrabalhado) b;
	    return d.compareTo(d1);
                 }

                                    });
 
ts.addAll(diasTrabalhados.values()); // dias trabalhados e meu HashMap

O tamanho do TreeSet ficá 1 e perco a outra referência , prq será que acontece isso?

4 Respostas

ViniGodoy

Tome cuidado que o TreeSet vai usar o compareTo para eliminar elementos.

O que significa que sempre que a.compareTo(b) for igual a 0, o elemento a será eliminado e dará lugar ao elemento b.

T

Isso deve estar ocorrendo porque há dois objetos com o mesmo valor para DiaTrabalhado. Você precisa pôr mais um campo na sua implementação de compare.

ViniGodoy

Se for só para exibir ordenado, outra opção é criar um ArrayList e usar o método Collections.sort().

ramilani12

É isso mesmo:
Passei para um List o HashMap usei Collection.sort() e voilá!

Obrigado pela ajuda pessoal!

Criado 12 de janeiro de 2007
Ultima resposta 12 de jan. de 2007
Respostas 4
Participantes 3