Trier une carte Java par valeurs

JavaBeginner
Pratiquer maintenant

Introduction

En Java, les cartes (Maps) ne sont pas triées par défaut et stockent les données au format clé-valeur. Il est souvent nécessaire de les trier en fonction des valeurs pour prendre des décisions basées sur les valeurs. Dans ce laboratoire étape par étape, nous allons apprendre à trier une carte Java en fonction des valeurs.

Création d'une carte (Map) en Java

Tout d'abord, nous allons créer une carte (Map) d'étudiants avec leurs noms et leurs tailles en centimètres pour comprendre comment trier les cartes (Maps) en Java.

import java.util.*;

public class MapSortingDemo {
    public static void main(String args[]) {
        Map<String, Integer> students = new HashMap<>();
        students.put("Student 1", 159);
        students.put("Student 2", 147);
        students.put("Student 3", 183);
        students.put("Student 4", 167);
        students.put("Student 5", 173);
    }
}

Trier une carte (Map) en fonction des valeurs

Pour trier la carte (Map) en fonction des valeurs, nous devons créer une liste à partir de Map.entrySet(). Cette méthode renvoie toutes les paires clé-valeur de la carte (Map). La fonction Comparator intervient lorsqu'il s'agit de trier un ensemble particulier en fonction de plusieurs paramètres. Dans la fonction Comparator, return student1.getValue().compareTo(student2.getValue()); détermine la manière de tri, c'est-à-dire par valeur, et cela triera la carte (Map) en fonction des valeurs.

List<Map.Entry<String, Integer>> studentList = new ArrayList<>(students.entrySet());

Collections.sort(studentList, new Comparator<Map.Entry<String, Integer>>() {
    @Override
    public int compare(Map.Entry<String, Integer> student1, Map.Entry<String, Integer> student2) {
        return student1.getValue().compareTo(student2.getValue());
    }
});

Afficher une carte (Map) triée en fonction des valeurs

Affichez la carte (Map) triée dans la console.

for (Map.Entry<String, Integer> student : studentList) {
    System.out.println(student.getKey() + " " + student.getValue());
}

Trier une carte (Map) à l'aide d'une expression lambda

Nous pouvons également trier une carte (Map) en fonction des valeurs à l'aide d'expressions lambda, qui est une manière plus courte et plus efficace.

List<Map.Entry<String, Integer>> studentList = new ArrayList<>(students.entrySet());

studentList.sort((student1, student2) -> student1.getValue().compareTo(student2.getValue()));

Afficher une carte (Map) triée en fonction des valeurs à l'aide d'une expression lambda

Affichez la carte (Map) triée dans la console.

studentList.forEach(student -> System.out.println(student.getKey() + " " + student.getValue()));

Trier une carte (Map) en fonction des clés

De manière similaire, nous pouvons trier la carte (Map) en fonction des clés. Dans la fonction Comparator, return student1.getKey().compareTo(student2.getKey()); détermine la manière de tri, c'est-à-dire par clé.

List<Map.Entry<String, Integer>> studentList = new ArrayList<>(students.entrySet());

Collections.sort(studentList, new Comparator<Map.Entry<String, Integer>>() {
    @Override
    public int compare(Map.Entry<String, Integer> student1, Map.Entry<String, Integer> student2) {
        return student1.getKey().compareTo(student2.getKey());
    }
});

Afficher une carte (Map) triée en fonction des clés

Affichez la carte (Map) triée dans la console.

for (Map.Entry<String, Integer> student : studentList) {
    System.out.println(student.getKey() + " " + student.getValue());
}

Trier une carte (Map) en fonction des clés à l'aide d'une expression lambda

Nous pouvons également trier une carte (Map) en fonction des clés à l'aide d'expressions lambda, qui est une manière plus courte et plus efficace.

List<Map.Entry<String, Integer>> studentList = new ArrayList<>(students.entrySet());

studentList.sort((student1, student2) -> student1.getKey().compareTo(student2.getKey()));

Afficher une carte triée selon les clés à l'aide d'une expression lambda

Affichez la carte (Map) triée dans la console.

studentList.forEach(student -> System.out.println(student.getKey() + " " + student.getValue()));

Résumé

Dans ce laboratoire, nous avons appris comment trier une carte (Map) Java en fonction de ses valeurs à l'aide de la méthode Collections.sort() et de fonctions Comparator, ainsi qu'à l'aide d'expressions lambda. Nous avons également appris comment trier une carte en fonction de ses clés. Trier une carte en fonction de ses valeurs peut être utile dans de nombreuses situations, telles que le classement ou les opérations basées sur les priorités.