Maison >Java >javaDidacticiel >Comment puis-je trier un TreeMap par ses valeurs en Java ?

Comment puis-je trier un TreeMap par ses valeurs en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-21 16:16:12203parcourir

How Can I Sort a TreeMap by its Values in Java?

Tri d'un TreeMap par valeur

Introduction :

Dans un TreeMap, les éléments sont triés en fonction de leur ordre naturel, qui peut être les clés ou les valeurs, selon l'implémentation. Il est cependant possible de trier un TreeMap en fonction des valeurs de ses entrées à l'aide d'un comparateur.

Solution :

Vous ne pouvez pas trier directement un TreeMap par ses valeurs. La syntaxe que vous avez essayée avec le comparateur byValue est incorrecte.

Cependant, vous pouvez obtenir la fonctionnalité souhaitée en créant un SortedSet personnalisé qui contient les entrées du TreeMap. Ce SortedSet peut être créé à l'aide de la méthode inputsSortedByValues() :

static <K,V extends Comparable<? super V>>
SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
    SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<>(
        new Comparator<Map.Entry<K,V>>() {
            @Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
                int res = e1.getValue().compareTo(e2.getValue());
                return res != 0 ? res : 1;
            }
        }
    );
    sortedEntries.addAll(map.entrySet());
    return sortedEntries;
}

Cette méthode prend une Map dont les valeurs sont Comparable et renvoie un SortedSet de Map.Entry trié par les valeurs des entrées.

Pour utiliser cette méthode :

Map<String, Integer> map = new TreeMap<>();
map.put("A", 3);
map.put("B", 2);
map.put("C", 1); 

System.out.println(map); // prints "{A=3, B=2, C=1}"

SortedSet<Map.Entry<String,Integer>> sortedEntries = entriesSortedByValues(map);
System.out.println(sortedEntries); // prints "[C=1, B=2, A=3]"

Note sur Integer Égalité :

Lors de la comparaison de valeurs entières à l'aide de ==, il vérifie l'égalité des références, et non l'égalité des valeurs. Il est recommandé d'utiliser la méthode equals() pour comparer les valeurs entières pour l'égalité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn