D'une manière générale, une carte est une structure de données composée de paires de valeurs clés, et chaque clé est unique dans l'ensemble. Utilisons K et V pour représenter les clés et les valeurs pour illustrer les neuf principaux numéros principaux concernant MAP en Java.
0. Convertir la carte en type de liste
Dans Java, l'interface MAP fournit trois façons d'obtenir des collections: ensemble de clés, jeu de valeur et ensemble de valeurs de clé. Ils peuvent tous être convertis en type de liste par constructeur ou méthode addall (). Le code suivant montre comment construire une liste Array à partir d'une carte:
// key listList keyList = new ArrayList (map.KeySet ()); // Value listList valuellist = new ArrayList (map.valueset ()); // key-valeur listlist entryList = new ArrayList (map.entryset ());
1. Traverser la carte par l'entrée
De cette façon, en Java, existe car les paires de valeurs clés s'appelle map.entry. Map.EntrySet () Renvoie une collection de valeurs clés, ce qui est un moyen très efficace de traverser.
pour (entrée d'entrée: map.entryset ()) {// get keyk key = entry.getKey (); // get valuev value = entry.getValue ();} L'itérateur est également utilisé fréquemment, surtout avant JDK1.5
Iterator itr = map.entryset (). Iterator (); while (ir.hasnext ()) {entrée entrée = itr.next (); // get keyk key = entry.getKey (); // get valuev value = entry.getValue ();} 2. Trier la carte par clé
Le tri nécessite des opérations fréquentes sur le KE de MAP. Une façon consiste à l'implémenter via un comparateur:
List list = new ArrayList (map.entrySet ()); collections.sort (list, new Comparator () {@OverRidePublic int compare (entrée e1, entrée e2) {return e1.getKey (). Compareto (e2.getKey ());}}); Une autre méthode consiste à utiliser TriedMap, mais l'interface comparable doit être implémentée.
Tridmap tridmap = new Treemap (new comparateur () {@OverRidePublic int compare (k k1, k k2) {return k1.compareto (k2);}}); tridmap.putall (map);3. Triez la carte avec la valeur <br /> Ceci est quelque peu similaire au point précédent, le code est le suivant:
List list = new ArrayList (map.entrySet ()); Collection.Sort (list, new Comparator () {@OverRiDePublic int compare (Entry E1, Entry e2) {return e1.getValue (). Compare (e2.GetValue ());}});4. Initialiser une carte constante statique
Lorsque vous souhaitez créer une carte statique globale, nous avons deux façons et il est filial.
Dans TEST1, bien que nous déclarons que la carte est statique, nous pouvons toujours modifier sa valeur lorsqu'il est initialisé, tout comme test1.map.put (3, "trois");
Dans Test2, nous l'avons défini comme non modifié via une classe intérieure, donc lorsque nous exécutons Test2.map.put (3, "trois"), il lancera un
L'exception non soutenue de l'Exception de l'Exception vous interdit de modifier. classe publique test1 {carte finale statique privée statique; statique {map = new hashmap (); map.put (1, "one"); map.put (2, "deux");}} classe publique test2 {map finale statique privée; "static {map amap = new hashmap (); amap.put (1," one "); amap.put (2," deux "); map = map =" Collection.unModifiBLEBLEP (AMAP);}} 5. La différence entre Hashmap, Treemap et Hashtable
Dans l'interface MAP, il y a trois implémentations: Hashmap, Treemap et Hashtable.
Ils sont différents. Pour plus de détails, veuillez vous référer à l'article "Hashmap vs Treemap vs HashTable vs LinkedHashmap".
6. Requête inversée dans la carte
Après avoir ajouté une paire de valeurs de clé à la carte, cela signifie que dans la carte, la clé et la valeur correspondent à une, et une clé correspond à une valeur. Mais parfois, nous devons inverser la requête, comme la recherche de sa clé à travers une certaine valeur. Cette structure de données est appelée carte bidirectionnelle. Malheureusement, JDK ne le soutient pas.
Apache et Guava fournissent conjointement cette implémentation de carte bidirectionnelle, dans laquelle il stipule que les clés et les valeurs doivent être une relation 1: 1.
7. Copie de la carte
Java fournit de nombreuses méthodes qui peuvent réaliser la réplication d'une carte, mais ces méthodes peuvent ne pas être synchronisées à tout moment. Autrement dit, c'est le changement qui se produit sur une carte, et celui copié reste le même. Voici une méthode d'implémentation relativement efficace:
Map CopiedMap = Collection.SynchronizedMap (MAP);
Bien sûr, il existe une autre méthode, qui est le clonage. Mais notre initiateur Java Josh Bloch ne recommande pas cette méthode. Il a dit une fois dans une interview sur le clonage de la carte: des méthodes de clonage sont fournies dans de nombreuses classes parce que les gens en ont besoin. Cependant, le clonage est très limité et provoque souvent un impact inutile. (Texte d'origine "Copier Constructeur en fonction du clonage")
8. Créer une carte vide
Si cette carte est définie sur non disponible, elle peut être implémentée par ce qui suit
map = collections.emptyMap ();
Au contraire, lorsque nous pouvons l'utiliser, nous pouvons
map = new hashmap ();
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.