"Et enfin, je vais vous parler de Map."

"Carte, comme vous le savez, stocke un ensemble de paires clé-valeur. Les clés doivent être uniques, mais les valeurs peuvent être n'importe quoi. Si vous ajoutez une paire clé-valeur à une carte et que la collection contient déjà la clé, alors l'ancienne valeur sera remplacée par la nouvelle. En d'autres termes, la clé agit comme un index spécial qui peut être n'importe quel objet ."

Carte est un terme mathématique qui désigne un ensemble de paires (x, y), dans lequel chaque x unique correspond à un y.

Les programmeurs sont très friands de Map, nous présentons donc ici 4 collections différentes qui implémentent l'interface Map :

"Voici sa structure d'héritage simple :"

Hiérarchie de la carte - 1

"Le jaune indique que Entry est une interface imbriquée dans l' interface Map ."

"Une entrée a été ajoutée pour décrire une paire d'éléments comme une seule entité."

"Voici les méthodes de Map<K,V> :"

Méthodes Description
int size() Renvoie le nombre de paires dans la carte.
boolean isEmpty() Vérifie si la carte est vide.
boolean containsKey(Object key) La carte contient-elle la clé spécifiée ?
boolean containsValue(Object value) La carte contient-elle la valeur spécifiée ?
V get(Object key) Renvoie la valeur de la clé spécifiée.
V put(K key, V value) Définit une nouvelle valeur pour la clé.
La méthode renvoie l'ancienne valeur ou null
putAll(Map<? extends K, ? extends V> m) Ajoute des paires d'une autre carte.
void clear() Efface la carte, c'est-à-dire supprime toutes les paires.
Set<K>keySet() Renvoie un ensemble de clés.
Collection<V>values() Renvoie une collection de valeurs.
Set<Map.Entry<K, V>>entrySet() Renvoie un ensemble de paires.

"K et V sont les paramètres de type pour les clés et les valeurs."

"Eh bien, je connais la plupart des méthodes, mais je n'ai travaillé qu'avec certaines d'entre elles."

« Que pouvez-vous me dire d'autre sur la classe d'entrée ? »

"Cette classe décrit une paire d'éléments. Elle a quelques méthodes :"

Méthodes Description
getKey() Renvoie la clé de la paire clé-valeur.
getValue() Renvoie la valeur de la paire clé-valeur.
setValue(V value) Définit une nouvelle valeur dans la paire clé-valeur.

"L'entrée est pratique, car vous pouvez passer une paire à une méthode sans passer la carte entière."

"Je vois."

"Maintenant, je vais passer en revue les implémentations de Map."

"Le premier est HashMap . Il utilise des tables de hachage pour stocker des éléments. Les clés et les valeurs peuvent être de n'importe quel type, ainsi que null. L'ordre des éléments peut changer lorsque la collection change ."

"Les éléments sont stockés dans un HashMap sous la forme d'un ensemble de groupes ou de compartiments. La méthode hashCode() d'un élément détermine dans quel compartiment il se trouve."

"Très grossièrement, les éléments avec un code de hachage de 1 à 100 tombent dans le premier seau, ceux avec une valeur de 101 à 200 tombent dans le second, et ainsi de suite."

"L'intérêt de stocker des éléments de cette manière est que nous pouvons éliminer tous les éléments dans des compartiments non pertinents lors de la recherche ou de la suppression d'éléments."

"Je vois."

"Il y a un très bon article sur HashMap. Je vous recommande de le lire : https://medium.com/@mr.anmolsehgal/java-hashmap-internal-implementation-21597e1efec3 "

"La deuxième collection est LinkedHashMap . Sa principale différence avec HashMap est qu'elle stocke également les éléments sous forme de liste liée. Dans un HashMap ordinaire, l'ordre des éléments n'est pas défini et peut changer avec le temps. Et vous pouvez obtenir un itérateur à partir d'un LinkedHashMap et utilisez-le pour parcourir tous les éléments dans l'ordre dans lequel ils ont été ajoutés au LinkedHashMap. De plus, LinkedHashMap dispose d'un itérateur qui vous permet de parcourir toutes les paires dans l'ordre de la dernière utilisation/activité.

"Il y a un très bon article sur LinkedHashMap. Et voilà : https://medium.com/@mr.anmolsehgal/java-linkedhashmap-internal-implementation-44e2e2893036 "

"La troisième collection dont j'aimerais parler aujourd'hui est TreeMap ."

" TreeMap conserve ses éléments triés par ordre croissant. Ceci est réalisé grâce au fait que TreeMap utilise un arbre rouge-noir équilibré pour stocker les éléments."

"En conséquence, le temps d'insertion et le temps de recherche sont très faibles. Cette classe est un excellent choix lors de l'utilisation de très grandes quantités de données."

« Et, bien sûr, nous avons un article sur TreeMap : https://medium.com/xebia-engineering/treemap-internals-199e0e0050b5 »

« De quoi ne t'ai-je pas encore parlé ?

"WeakHashMap, mais Rishi m'en a parlé il y a quelques jours."

"C'était quand?"

"Quand il a parlé de SoftReference, WeakReference et PhantomReference."

"Je te crois, étant donné que tu les as tous nommés correctement. Alors va te détendre. A ce soir."

"Au revoir, Ellie."