Duplicaté possible: strong>
Comment trier une cartesur les valeurs de Java? P>J'ai un haschmap du type: p>
xxx pré> 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. P>
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: p>
xxx pré> qui ne trie pas les valeurs par ordre alphabétique, il accède également aux temps de hachmap max * h (taille). p>
Quelle est la meilleure solution? P> blockQuote>
4 Réponses :
regarder bibliothèques Google Guava . Il a un < code> multiiset code> qui fait le calcul pour vous, puis vous avez Commande code>
classe qui simplifie le tri. P>
Tout ce que vous avez à faire est de remplir multiiset code> avec vos chaînes. Cela maintiendra la fréquence pour vous. Ensuite, vous pouvez trier ces chaînes en utilisant
commande code>. P>
probablement pas la solution la plus élégante, mais qu'en est-il de cela?
-1 * o1.compareto (O2) code> est défectueux. Prenons le cas où
compareTo code> retourne
Integer.MIN_VALUE code>.
@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 () code> méthode ..
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>());
Presque, je suppose que parce que parce que ces mots avec moins d'occurrence viennent d'abord ..
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. P>
-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.
@krock bon trouver. Oui, exactement la même question.