Ordenação TreeMap

2 respostas
M

Alguém pode me ajudar com o seguinte problema:

Uma parte do sistema no qual trabalho pede a exibição de dados de uma consulta ordenado por um campo string e um campo data, ou seja preciso ordenar por data cada grupo de determinado label(string).
Na minha classe, eu trabalho com um treeMap, na key do meu treemap eu tenho uma string q eu monto concatenando 3 valores da minha consulta.
Colocando mais um sequencial de ordenação a frente dessa chave eu consegui ordenar da forma q eu queria, pois o resultado da minha consulta traz a ordenação desejada, mas quando esse sequencial ultrapassa a contagem de 10, por ser exatamente uma string, essa ordenação embaralha novamente os valores.
Pesquisei um pouco e descobri q poderia ordenar pela ordem de inserção utilizando LinkedHashMap, mas essa classe só está available apartir do java 1.4 e no sistema q trabalho utilizamos java 1.3.

Alguém conhece alguma outra forma de implementar um LinkedHashMap utilizando as classes do 1.3?

Obrigada

2 Respostas

sergiotaborda

MissAyres:
Alguém pode me ajudar com o seguinte problema:

Uma parte do sistema no qual trabalho pede a exibição de dados de uma consulta ordenado por um campo string e um campo data, ou seja preciso ordenar por data cada grupo de determinado label(string).
Na minha classe, eu trabalho com um treeMap, na key do meu treemap eu tenho uma string q eu monto concatenando 3 valores da minha consulta.
Colocando mais um sequencial de ordenação a frente dessa chave eu consegui ordenar da forma q eu queria, pois o resultado da minha consulta traz a ordenação desejada, mas quando esse sequencial ultrapassa a contagem de 10, por ser exatamente uma string, essa ordenação embaralha novamente os valores.

O seu problema não é usar TreeMap. Esse é objeto certo para o que vc quer. O seu problema é definir a chave do mapa.
O que vc está usando é programação orientada a strings (POS) e isso é quase um POG (prgoramação orientada a gambiarra).
O que vc tem que fazer é definir um objeto chave que seja ordenável e cuja ordem dependa da String e da Data
Vc precisa criar um objeto que implemente Comparable ou um Comparator para o TreeMap entenda a ordem das chaves.
Depois vc tem que criar este objeto de chave dos objeto de data e do label.

class Key implements Comparable<Key> {

   private String label;
   private Date date;

   public boolean equals(Object other){
        return other intanceof Key && equals((Key)other);
   }

   public boolean equals(Key other){
        return this.date.equals(other.date) && this.label.equals(other.label);
   }
 
  public int hashCode(){
       return date.hashCode() ^ label.hashCode();
   }

  public int compareTo(Key other){
       int res =  this.date.compareTo(other.date);
       if (res==0){
             return this.label.compareTo(other.label);
      }
      return res;
   }
}
M

É exatamente isso q está me complicando, não quero manter um key string, estou verificando a possibilidade de colocar um key(incrementável) q eu possa manipular de acordo com a inserção no treemap para manter a ordem q eu quero…

Criado 20 de maio de 2008
Ultima resposta 21 de mai. de 2008
Respostas 2
Participantes 2