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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-11-27 14:56:12681parcourir

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

Tri d'un HashMap par valeurs

Tri d'un HashMap par ses valeurs peut être une opération utile dans divers scénarios de programmation. Pour effectuer cette tâche efficacement, nous pouvons exploiter les fonctionnalités intégrées de Java et implémenter une logique de tri personnalisée.

Utilisation de Java Lambdas et Streams :

Utilisation des expressions lambda de Java 8 et streams fournit une approche concise et moderne pour trier une HashMap. L'extrait de code suivant illustre cette technique :

import java.util.*;
import java.util.stream.Collectors;

public class HashMapSort {

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

        // Sort the HashMap by values in ascending order
        Map<Integer, String> sortedMapAsc = map.entrySet()
                .stream()
                .sorted(Comparator.comparing(Map.Entry::getValue))
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                        (a, b) -> b, LinkedHashMap::new));

        // Print the sorted map
        for (Map.Entry<Integer, String> entry : sortedMapAsc.entrySet()) {
            System.out.println(entry.getKey() + "," + entry.getValue());
        }
    }
}

Tri personnalisé :

Alternativement, nous pouvons implémenter un algorithme de tri personnalisé à l'aide d'un comparateur. Cette approche nous donne plus de flexibilité et de contrôle sur le processus de tri :

import java.util.*;

public class HashMapSort {

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

        // Define a custom comparator to sort by values
        Comparator<Map.Entry<Integer, String>> comparator = new Comparator<>() {
            @Override
            public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }
        };

        // Sort the HashMap by values in ascending order
        List<Map.Entry<Integer, String>> sortedList = new ArrayList<>(map.entrySet());
        sortedList.sort(comparator);

        // Print the sorted map
        for (Map.Entry<Integer, String> entry : sortedList) {
            System.out.println(entry.getKey() + "," + entry.getValue());
        }
    }
}

En conclusion, le tri d'une HashMap par ses valeurs peut être réalisé à l'aide de diverses techniques, notamment des lambdas et des flux Java ou des implémentations de comparateurs personnalisés. Le choix de l'approche dépend des exigences spécifiques et du contexte de l'application.

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