Ordenar HashTable por value em JAVA

Cris88

Power Member
Boas pessoal,

Tenho uma duvida que deve ser trivial mas não estou a ver um modo simples de o fazer.

Alguém me pode dar uma luz como ordeno um HashTable por VALUE e de seguida se o VALUE for igual em algum caso ordenar por KEY?

Agradeço ajuda...

Desde já o meu obrigado!!

Cumps,
Cristiano Freitas
 
Numa hashtable tu tens keys e values. Cada key é única, mas os valores podem ser repetidos. Portanto, a hashtable só se ordena por keys. Para ordenares por value tens de ler os valores um a um e usar um outro algoritmo para os ordenares e até mesmo uma outra estrutura onde os guardares.

Mas qual era a necessidade que tinhas no momento para ordenares por value numa hastable?
 
Uma maneira fofa é teres um TreeMap em que as chaves contêm uma referencia para o seu objecto Value. Depois fazes um comparador para o TreeMap e pronto. O problema é que para inserires tens de remover primeiro.
 
Nã opercebo nada de treeMap mas obrigado na mesma... Pensava que havia uma forma mais linear de fazer isso...
Um TreeMap é, à semelhança de um HashMap, uma estrutura de dados que permite criar associações chave-valor. A diferença entre o TreeMap e o HashMap é que o TreeMap usa uma árvore binária balanceada para, internamente, manter as chaves ordenadas, enquanto que o HashMap usa uma tabela de hash (logo não garante ordenação). A sugestão dada pelo IComeFromBehind consiste em criar uma classe que implemente um Comparator do tipo das chaves, codificando nela o método compare. Depois, no construtor desse TreeMap, passarias como parâmetro uma instância do Comparator, o que ia permitir que, ao inserires os valores nesse Map, as chaves ficassem ordenadas segundo o critério definido no método compare.
 
Um TreeMap é, à semelhança de um HashMap, uma estrutura de dados que permite criar associações chave-valor. A diferença entre o TreeMap e o HashMap é que o TreeMap usa uma árvore binária balanceada para, internamente, manter as chaves ordenadas, enquanto que o HashMap usa uma tabela de hash (logo não garante ordenação). A sugestão dada pelo IComeFromBehind consiste em criar uma classe que implemente um Comparator do tipo das chaves, codificando nela o método compare. Depois, no construtor desse TreeMap, passarias como parâmetro uma instância do Comparator, o que ia permitir que, ao inserires os valores nesse Map, as chaves ficassem ordenadas segundo o critério definido no método compare.

Já esta feito... Foi assim que fiz... Obrigadão pessoal... ;)
 
Back
Topo