Créer une carte ordonnée en Java
-
Trier la carte à l’aide de la classe
TreeMap
en Java - Créer un ordre de carte à l’aide des fonctions Java 8
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 Java 8
Java 8 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 static java.util.AbstractMap.SimpleEntry;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
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
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedInArticle connexe - Java Map
- Convertir les valeurs de map en une liste en Java
- Filtrage de map en Java
- Convertir une liste en map en Java
- Créer une Map en Java
- Différence entre hashmap et map en Java