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.
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.)
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é.
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
$ 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