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
Libérer: 2024-11-27 14:56:12
original
714 Les gens l'ont consulté

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 :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

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());

        }

    }

}

Copier après la connexion

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 :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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());

        }

    }

}

Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal