1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ordenar HashTable por value em JAVA

Discussão em 'Programação' iniciada por Cris88, 2 de Dezembro de 2008. (Respostas: 10; Visualizações: 2513)

  1. Cris88

    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
     
  2. souto

    souto To fold or to FOLD?

    Tens noção do funcionamento de uma hashtable?
     
  3. Cris88

    Cris88 Power Member

  4. Paos[CeRe4L]

    Paos[CeRe4L] Power Member

    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?
     
  5. IComeFromBehind

    IComeFromBehind Power Member

    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.
     
  6. Cris88

    Cris88 Power Member

    Nã opercebo nada de treeMap mas obrigado na mesma... Pensava que havia uma forma mais linear de fazer isso...
     
  7. Cris88

    Cris88 Power Member

  8. Que tipo de dados tens no value? é uma String um int ou um objecto?
     
  9. Baderous

    Baderous Banido

    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.
     
  10. Cris88

    Cris88 Power Member

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

Partilhar esta Página