Comment trier un treemap basée sur ses valeurs?
Comment puis-je trier un treemap à l'aide de ses valeurs plutôt que la clé?
La première solution de ce lien est le meilleur que vous pouvez avoir. stackoverflow.com/questions/2864840/treemap-sort-by-value
OriginalL'auteur Click Upvote | 2009-09-19
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas le TreeMap du comparateur est exécutée sur les touches uniquement, par exemple, voir ce constructeur.
De toute façon, vous pouvez utiliser plusieurs Collections, utilisez le TreeMap (ou plutôt de la table de hachage) pour la recherche d'éléments clés, et ont un SortedSet pour effectuer une itération sur les valeurs.
OriginalL'auteur Zed
Voici une solution:
Noter que la carte est triée à partir de la valeur la plus élevée à la plus basse.
ce n'est effectivement pas de travail! à moins que toutes les données sont dans l'original
Map<K,V> map
et vous n'avez jamais besoin de mettre de nouvelles valeursOriginalL'auteur Anthony
Google Guava propose un TreeMultiMap.
Vous pouvez également utiliser deux collections. Qu'essayez-vous de réaliser? Pouvez-vous expliquer votre cas d'utilisation?
OriginalL'auteur richs
Apache Commons Collections a un TreeBidiMap:
Il y a un Java5-génériques port de ici.
OriginalL'auteur skaffman
Essayer de code ci-dessous, il fonctionne très bien pour moi. Vous pouvez choisir à la fois ascendante ainsi que l'ordre décroissant pour le tri.
OriginalL'auteur Rais Alam
Vous pouvez essayer de donner un élément de Comparaison qui comparent des valeurs au lieu des touches lorsque vous créez le TreeMap.
Il ne sera pas. Ce n'est pas possible avec le TreeMap.
Vrai, vous ne pouvez pas accéder à la treemap valeurs dans le comparateur depuis le treemap est pas encore créé. Mais vous pouvez utiliser un temporaire treemap pour que...
OriginalL'auteur Vincent Robert
Des swaps et des clés.
Plus sérieusement, veuillez fournir le contexte de ce que vous voulez atteindre. C'est peut-être assez pour trier après un autre traitement est terminé.
Il signifie que vous devriez utiliser tout ce que vous êtes en utilisant comme clé maintenant que la valeur, et vice versa. De cette façon, vous pouvez trier sur votre valeur, qui est maintenant la clé.
C'est généralement une mauvaise approche, car la carte a les clés uniques (à l'égard de compareTo), mais pas nécessairement des valeurs uniques. Créer une nouvelle carte avec des touches échangé avec les valeurs pourrait vous donner un autre jeu de données.
OriginalL'auteur starblue
C'est que j'ai fait..
OriginalL'auteur Ritwik Jain