9
votes

Tri de HASHMAP en fonction de la valeur alors la touche?

Duplicaté possible:

Comment trier une carte sur les valeurs de Java?

J'ai un haschmap du type: xxx

Le hashmap contient une liste de chaînes et l'entier est un compteur pour le nombre de fois que la chaîne a été trouvée. Ce que j'aimerais pouvoir faire est de trier le haschmap basé sur les entiers, puis de l'ordre alphabétique des chaînes.

pour le moment je garde un enregistrement de la plus grande occurrence d'un mot ( variable nommée max) et affichant les valeurs comme suit: xxx

qui ne trie pas les valeurs par ordre alphabétique, il accède également aux temps de hachmap max * h (taille).

Quelle est la meilleure solution?


1 commentaires

@krock bon trouver. Oui, exactement la même question.


4 Réponses :


3
votes

regarder bibliothèques Google Guava . Il a un < code> multiiset qui fait le calcul pour vous, puis vous avez Commande classe qui simplifie le tri.

Tout ce que vous avez à faire est de remplir multiiset avec vos chaînes. Cela maintiendra la fréquence pour vous. Ensuite, vous pouvez trier ces chaînes en utilisant commande .


0 commentaires

2
votes

probablement pas la solution la plus élégante, mais qu'en est-il de cela? XXX


3 commentaires

-1 * o1.compareto (O2) est défectueux. Prenons le cas où compareTo retourne Integer.MIN_VALUE .


@Stephen: Merci d'avoir souligné!


En fait, je n'aurais pas dû écrire mon propre code pour inversion de l'ordre naturel: P substituer avec le collections.Reversevere () méthode ..



14
votes

Voici un comparateur code> (code> qui trie map.Entry code> Objets avec clés et valeurs code> comparables:

List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(h.entrySet());
Collections.sort(list, new ValueThenKeyComparator<String, Integer>());


1 commentaires

Presque, je suppose que parce que parce que ces mots avec moins d'occurrence viennent d'abord ..



-2
votes

Vous pouvez utiliser une interface SIEDMAP pour trier votre HASHMAP. C'est très facile - tri automatique. Reportez-vous à http: //java.sun. COM / J2SE / 1.4.2 / DOCS / API / JAVA / UTIL / SORTEDMAP.HTML . Je n'ai pas inclus aucun code ici, mais si vous avez besoin, ajoutez simplement un commentaire. Je vais vous donner un exemple de code.


2 commentaires

-1, triède trie par clé, plutôt que par valeur


Une carte qui garantit davantage qu'il s'agira d'un ordre de clé ascendant, trié en fonction de l'ordre naturel de ses clés (voir l'interface comparable) ou par un comparateur fourni au moment de la création de carte triée.