Maison >Java >javaDidacticiel >Comment trier un HashMap Java par valeurs par ordre croissant et décroissant ?

Comment trier un HashMap Java par valeurs par ordre croissant et décroissant ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-26 17:38:15650parcourir

How to Sort a Java HashMap by Values in Ascending and Descending Order?

Tri d'un HashMap par valeurs

En Java, la structure de données HashMap fournit un moyen pratique de stocker des paires clé-valeur. Cependant, si vous devez accéder aux données en fonction des valeurs associées aux clés, trier le HashMap par valeurs est nécessaire.

Tri d'un HashMap par ordre croissant

Une approche pour trier un HashMap par valeurs consiste à utiliser un flux Java 8. L'extrait de code suivant montre comment procéder par ordre croissant :

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class SortHashMapByValues {

    public static void main(String[] args) {
        // Create an unsorted HashMap
        HashMap<Integer, String> unsortedMap = new HashMap<>();
        unsortedMap.put(1, "froyo");
        unsortedMap.put(2, "abby");
        unsortedMap.put(3, "denver");
        unsortedMap.put(4, "frost");
        unsortedMap.put(5, "daisy");

        // Sort the HashMap by values in ascending order
        Map<Integer, String> sortedMapAsc = unsortedMap.entrySet()
                .stream()
                .sorted(Map.Entry.comparingByValue())
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                        (oldValue, newValue) -> oldValue, LinkedHashMap::new));

        // Key, Value : 2, abby
        // Key, Value : 5, daisy
        // Key, Value : 3, denver
        // Key, Value : 4, frost
        // Key, Value : 1, froyo
        System.out.println(sortedMapAsc);
    }
}

Tri d'une HashMap par ordre décroissant

Pour trier une HashMap par valeurs par ordre décroissant, modifiez légèrement l'extrait de code ci-dessus :

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class SortHashMapByValues {

    public static void main(String[] args) {
        // Create an unsorted HashMap
        HashMap<Integer, String> unsortedMap = new HashMap<>();
        unsortedMap.put(1, "froyo");
        unsortedMap.put(2, "abby");
        unsortedMap.put(3, "denver");
        unsortedMap.put(4, "frost");
        unsortedMap.put(5, "daisy");

        // Sort the HashMap by values in descending order
        Map<Integer, String> sortedMapDesc = unsortedMap.entrySet()
                .stream()
                .sorted(Map.Entry.<Integer, String>comparingByValue().reversed())
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                        (oldValue, newValue) -> oldValue, LinkedHashMap::new));

        // Key, Value : 1, froyo
        // Key, Value : 4, frost
        // Key, Value : 3, denver
        // Key, Value : 5, daisy
        // Key, Value : 2, abby
        System.out.println(sortedMapDesc);
    }
}

Ce code affichera le trié HashMap avec des clés représentant les clés et valeurs d'origine triées par ordre décroissant. Les exemples d'ordre croissant et décroissant utilisent un LinkedHashMap pour maintenir l'ordre d'insertion, garantissant que les clés sont correctement associées aux valeurs triées.

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