Trier les valeurs de la carte par ordre croissant des clés dans Java TreeMap

Aperçu

Classe HashMap

HashMap ne trie rien.

HashMap (Java SE 11 & JDK 11 )

Cette classe ne garantit pas l'ordre des cartes. En particulier, nous ne garantissons pas que l'ordre sera toujours constant.

Interface SortedMap

SortedMap réalise le tri par clé. Les clés et les valeurs renvoyées par les méthodes entrySet, keySet et values sont triées en fonction de l'ordre des clés.

SortedMap (Java SE 11 & JDK 11 )

Une carte qui fournit un ordre global pour cette clé. L'ordre des cartes peut être effectué selon l'ordre naturel des touches, ou avec le composeur normalement fourni lors de la création d'une carte de tri. Cet ordre est reflété lors du traitement itératif de la vue de collection de mappe de tri (retourné par les méthodes entrySet, keySet, values). Certaines opérations supplémentaires sont fournies pour profiter de cette commande. (Cette interface est une carte et est similaire à SortedSet.)

Classe TreeMap

TreeMap implémente l'interface SortedMap, le tri des clés est donc effectué.

TreeMap (Java SE 11 & JDK 11 )

Implémentation Red-NavigableMap basée sur l'arbre noir. Les cartes sont triées selon l'ordre naturel de leurs clés, ou par le comparateur fourni lors de la création de la carte, selon le constructeur utilisé.

Exemple de code

Code source pour vérifier le comportement de HashMap et TreeMap.

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class Sample {

  public static void main(String[] args) {

    //Construire HashMap
    //La commande n'est pas garantie
    Map<String, String> hashMap = new HashMap<String, String>();
    hashMap.put("0001", "Alice");
    hashMap.put("0002", "Bob");
    hashMap.put("0003", "Carol");
    hashMap.put("0004", "Dave");
    hashMap.put("0005", "Ellen");
    System.out.println("HashMap");
    for (String key : hashMap.keySet()) {
      System.out.println(key + ": " + hashMap.get(key));
    }
    System.out.println();

    //Construire TreeMap
    //Trie automatiquement dans l'ordre croissant des clés
    Map<String, String> treeMap = new TreeMap<String, String>(hashMap);
    System.out.println("TreeMap");
    for (String key : treeMap.keySet()) {
      System.out.println(key + ": " + treeMap.get(key));
    }
    System.out.println();

    //Lorsque vous ajoutez une valeur à TreeMap, il trie automatiquement dans l'ordre croissant des clés.
    treeMap.put("0000", "XXXXX");
    System.out.println("TreeMap");
    for (String key : treeMap.keySet()) {
      System.out.println(key + ": " + treeMap.get(key));
    }
    System.out.println();
  }
}

Résultat de l'exécution. HashMap ne trie rien. TreeMap est trié par ordre croissant de clés.

HashMap
0004: Dave
0005: Ellen
0002: Bob
0003: Carol
0001: Alice

TreeMap
0001: Alice
0002: Bob
0003: Carol
0004: Dave
0005: Ellen

TreeMap
0000: XXXXX
0001: Alice
0002: Bob
0003: Carol
0004: Dave
0005: Ellen

Cet environnement

$ java --version
openjdk 11.0.2 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

Recommended Posts

Trier les valeurs de la carte par ordre croissant des clés dans Java TreeMap
Obtenir des valeurs de carte nulles en Java
Tri par ordre croissant en Java (Tri à bulles: algorithme de méthode d'échange simple)
Carte en double triée par clé en Java
Inverser la clé de la valeur dans la carte Java
[Java] Ordre de conservation des valeurs définies de HashMap, TreeMap, LinkedHashMap
Comment trier par ordre croissant / décroissant avec SQLite
Obtenez des informations de localisation avec Rails et triez par ordre croissant
[Neta] Sleep Sort en Java
[Java8] Utilisez stream pour trier les tableaux de type int dans l'ordre décroissant
Trier la liste par ordre décroissant en Java et générer une nouvelle liste de manière non destructive
Tri des données Décroissant, croissant / Rails
Utilisez des clés composites dans Java Maps.
Ordre de description des membres dans la convention de codage Java
Points clés pour l'introduction de gRPC en Java
Mapper sans utiliser de tableau en java
Implémentation d'un algorithme de recherche / tri de base en Java
[Java] Faites attention au type de clé de la carte
[Java] Comment obtenir la clé et la valeur stockées dans Map par traitement itératif