Java HashMap
HashMap est une table de hachage qui stocke des associations clé-valeur.
HashMap implémente l'interface Map, stocke les données en fonction de la valeur HashCode de la clé, offre une vitesse d'accès très rapide, autorise au plus un enregistrement avec une clé null et ne prend pas en charge la synchronisation des threads.
HashMap n'est pas ordonné, c'est-à-dire qu'il ne conserve pas l'ordre d'insertion.
HashMap hérite d'AbstractMap et implémente les interfaces Map, Cloneable et java.io.Serializable.

Les types de clé et de valeur de HashMap peuvent être identiques ou différents. Ils peuvent être des clés et des valeurs String, ou des clés Integer et des valeurs String.
Les éléments dans HashMap sont en réalité des objets. Certains types de base courants peuvent utiliser leurs classes wrapper.
Le tableau des classes wrapper correspondant aux types de base est le suivant :
| Type de base | Type de référence |
|---|---|
| booléen | Boolean |
| octet | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Caractère |
La classe HashMap se trouve dans le package java.util. Vous devez l'importer avant utilisation. La syntaxe est la suivante :
import java.util.HashMap; // 引入 HashMap 类
Dans l'exemple suivant, nous créons un objet HashMap Sites, avec des clés Integer et des valeurs String :
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
Ajouter des éléments
La classe HashMap fournit de nombreuses méthodes utiles. Vous pouvez utiliser la méthode put() pour ajouter des paires clé-valeur :
Exemple
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// Créer l'objet HashMap Sites
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// Ajouter des paires clé-valeur
Sites.put(1, "Google");
Sites.put(2, "Example");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
System.out.println(Sites);
}
}
L'exécution du code ci-dessus produit la sortie suivante :
{1=Google, 2=Example, 3=Taobao, 4=Zhihu}
L'exemple suivant crée un HashMap avec des clés String et des valeurs String :
Exemple
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// Créer l'objet HashMap Sites
HashMap<String, String> Sites = new HashMap<String, String>();
// Ajouter des paires clé-valeur
Sites.put("one", "Google");
Sites.put("two", "Example");
Sites.put("three", "Taobao");
Sites.put("four", "Zhihu");
System.out.println(Sites);
}
}
L'exécution du code ci-dessus produit la sortie suivante :
{four=Zhihu, one=Google, two=Example, three=Taobao}
Accéder aux éléments
Nous pouvons utiliser la méthode get(key) pour obtenir la valeur correspondant à la clé :
Exemple
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// Créer l'objet HashMap Sites
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// Ajouter des paires clé-valeur
Sites.put(1, "Google");
Sites.put(2, "Example");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
System.out.println(Sites.get(3));
}
}
L'exécution du code ci-dessus produit la sortie suivante :
Taobao
Supprimer des éléments
Nous pouvons utiliser la méthode remove(key) pour supprimer la paire clé-valeur correspondant à la clé :
Exemple
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// Créer l'objet HashMap Sites
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// Ajouter des paires clé-valeur
Sites.put(1, "Google");
Sites.put(2, "Example");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
Sites.remove(4);
System.out.println(Sites);
}
}
L'exécution du code ci-dessus produit la sortie suivante :
{1=Google, 2=Example, 3=Taobao}
Pour supprimer toutes les paires clé-valeur, vous pouvez utiliser la méthode clear :
Exemple
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// Créer l'objet HashMap Sites
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// Ajouter des paires clé-valeur
Sites.put(1, "Google");
Sites.put(2, "Example");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
Sites.clear();
System.out.println(Sites);
}
}
L'exécution du code ci-dessus produit la sortie suivante :
{}
Calculer la taille
Pour calculer le nombre d'éléments dans un HashMap, vous pouvez utiliser la méthode size() :
Exemple
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// Créer l'objet HashMap Sites
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// Ajouter des paires clé-valeur
Sites.put(1, "Google");
Sites.put(2, "Example");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
System.out.println(Sites.size());
}
}
L'exécution du code ci-dessus produit la sortie suivante :
4
Parcourir un HashMap
Vous pouvez utiliser for-each pour parcourir les éléments d'un HashMap.
Si vous voulez seulement obtenir les clés, vous pouvez utiliser la méthode keySet(), puis obtenir la valeur correspondante via get(key). Si vous voulez seulement obtenir les valeurs, vous pouvez utiliser la méthode values().
Exemple
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// Créer l'objet HashMap Sites
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// Ajouter des paires clé-valeur
Sites.put(1, "Google");
Sites.put(2, "Example");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
// Afficher la clé et la valeur
for (Integer i : Sites.keySet()) {
System.out.println("clé : " + i + " valeur : " + Sites.get(i));
}
// Retourner toutes les valeurs
for(String value: Sites.values()) {
// Afficher chaque valeur
System.out.print(value + ", ");
}
}
}
L'exécution du code ci-dessus produit la sortie suivante :
key: 1 value: Google key: 2 value: Example key: 3 value: Taobao key: 4 value: Zhihu Google, Example, Taobao, Zhihu,
Méthodes Java HashMap
hashmapLa liste des méthodes Java HashMap couramment utilisées est la suivante :
| Méthode | Description |
|---|---|
| clear() | Supprime toutes les paires clé/valeur dans le hashMap |
| clone() | Copie un hashMap |
| isEmpty() | Détermine si le hashMap est vide |
| size() | Calcule le nombre de paires clé/valeur dans le hashMap |
| put() | Ajoute des paires clé/valeur au hashMap |
| putAll() | Ajoute toutes les paires clé/valeur au hashMap |
| putIfAbsent() | Si la clé spécifiée n'existe pas dans le hashMap, insère la paire clé/valeur spécifiée dans le hashMap. |
| remove() | Supprime le mappage de la clé spécifiée dans le hashMap |
| containsKey() | Vérifie si un mappage pour la clé spécifiée existe dans le hashMap. |
| containsValue() | Vérifie si un mappage pour la valeur spécifiée existe dans le hashMap. |
| replace() | Remplace la valeur correspondant à la clé spécifiée dans le hashMap. |
| replaceAll() | Remplace tous les mappages dans le hashMap par le résultat de l'exécution de la fonction donnée. |
| get() | Obtient la valeur correspondant à la clé spécifiée |
| getOrDefault() | Obtient la valeur correspondant à la clé spécifiée, et renvoie la valeur par défaut définie si la clé n'est pas trouvée. |
| forEach() | Effectue l'opération spécifiée sur chaque mappage dans le hashMap. |
| entrySet() | Renvoie une vue de type ensemble de toutes les associations dans le hashMap. |
| keySet() | Renvoie une vue de type ensemble de toutes les clés dans le hashMap. |
| values() | Renvoie toutes les valeurs présentes dans le hashMap. |
| merge() | Ajoute des paires clé-valeur au hashMap |
| compute() | Recalcule la valeur pour la clé spécifiée dans le hashMap |
| computeIfAbsent() | Recalcule la valeur pour la clé spécifiée dans la hashMap, et l'ajoute à la hashMap si la clé n'existe pas |
| computeIfPresent() | Recalcule la valeur pour la clé spécifiée dans la hashMap, à condition que la clé existe dans la hashMap. |
Pour plus de méthodes de l'API, voir :https://www.example.com/manual/jdk11api/java.base/java/util/HashMap.html
Autres extensions
Java Collections Framework