Créer une carte ordonnée en Java

  1. Trier la carte à l’aide de la classe TreeMap en Java
  2. Créer un ordre de carte à l’aide des fonctions Java8

Une carte est une structure de données en Java qui stocke des paires clé et valeur. La carte est une interface présente dans la hiérarchie Collection. Ces clés sont uniques, donc aucune clé en double n’est autorisée ; cependant, les variables mappées à la clé peuvent avoir des valeurs en double. Des classes comme HashMap, LinkedHashMap et TreeMap implémentent l’interface Map.

Trier la carte à l’aide de la classe TreeMap en Java

Ci-dessous, le programme montre l’ordre des cartes dans le programme Java.

import java.util.TreeMap;

public class Main {
    public static void main(String[] args) {
        TreeMap<String, Integer> map = new TreeMap<String, Integer>();
        map.put("Third", 1);
        map.put("First", 2);
        map.put("Second", 3);

        for (String key: map.keySet()) {
            System.out.println(key + " ,ID = "+ map.get(key) );
        }
    }
}

La classe TreeMap trie les valeurs de la carte par ordre croissant. Il implémente également l’interface SortedMap en interne, donc une instance de carte est créée à l’aide d’un nouveau mot-clé.

Le type de données à l’intérieur du treemap est spécifié au moment de l’instanciation. La touche Map est de type String et sa valeur est de type Integer.

La fonction put insère les paires clé-valeur dans le treemap. Maintenant, une boucle for-each est définie pour itérer sur la carte. En Java, l’itération directe sur la carte n’est pas possible. Ainsi, les clés de la carte sont initialement converties en une instance Set.

La fonction map.keySet retourne le Set de touches présentes dans la carte. Cette fonction est dans la classe TreeMap et retourne la vue ordonnée des clés présentes. La fonction get obtient la valeur correspondant à la clé.

Ci-dessous, la sortie par ordre croissant.

First ,ID = 2
Second ,ID = 3
Third ,ID = 1

Créer un ordre de carte à l’aide des fonctions Java8

Java8 prend en charge la programmation fonctionnelle qui permet aux utilisateurs de travailler sur la chaîne de fonctions.

Streams est une interface dans le package java.util qui facilite le travail sur les opérations séquentielles dans une seule instruction. La fonction Streams fonctionne dans le pipeline où un émetteur émet des données ; il est filtré, traité, transformé et bien plus encore, en fonction des besoins des utilisateurs.

package F09;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static java.util.AbstractMap.SimpleEntry;

public class MapOrdering {
    public static void main(String[] args) {
        Map<String, String> mapSortedByKey = Stream.of(
                new SimpleEntry<>("key3", "value1"),
                new SimpleEntry<>("key1", "value2"),
                new SimpleEntry<>("key2", "value3"))
                .sorted(Map.Entry.comparingByKey())
                .collect(Collectors.toMap(Map.Entry::getKey,
                        Map.Entry::getValue,
                        (oldVal, newValue) -> oldVal,
                        LinkedHashMap::new));

        System.out.println();
        System.out.print("Ordered List: ");
        for (String s1 : mapSortedByKey.keySet()) {
            System.out.print(" " + s1);
        }
    }
}

L’interface Stream fournit diverses fonctions et obtient son implémentation dans différentes classes pour travailler dessus. Ici, le flux de paires clé-valeur est formé à l’aide de la classe new SimpleEntry. Les valeurs sont insérées dans la fonction of pour former un flux.

Dans la série en chaîne, la fonction sorted est appelée. La fonction prend une instance Comparator pour organiser les touches dans une séquence en fonction de l’ordre défini. La fonction comparingByKey renvoie le comparateur qui compare la clé dans l’ordre croissant naturel.

La fonction sorted renvoie enfin un flux de valeurs classées par ordre croissant. La fonction collect de la classe Stream collecte les valeurs de carte données dans une nouvelle instance LinkedHashMap. La classe préserve l’ordre d’insertion de la séquence fournie. La fonction prend l’instance Collector comme paramètre.

Le premier paramètre est une fonction fournisseur toMap qui crée un nouveau conteneur. Le deuxième paramètre est BiConsumer qui accumule la valeur, et le dernier paramètre est BiConsumer qui agit comme un combineur qui fusionne les résultats. Ainsi, la commande LinkedHashMap::new combine le résultat et renvoie l’instance formée.

L’instance mapSortedByKey contient désormais les éléments de carte séquentiels qui sont itérés à l’aide de la boucle for-each ci-dessus. Les clés de carte résultantes sont imprimées dans la sortie standard ci-dessous.

Ordered List:  key1 key2 key3

Article connexe - Java Map

  • Créer une Map en Java
  • Comment obtenir une clé de valeur dans Java Hashmap
  • Article connexe - Java Sort

  • Comment convertir JSON en carte en Java
  • Comment interpréter chaque élément de la carte en Java