Java HashMap (avec des exemples)

Dans ce tutoriel, nous allons découvrir la classe Java HashMap et ses différentes opérations à l'aide d'exemples.

La HashMapclasse du framework de collections Java fournit les fonctionnalités de la structure de données de table de hachage.

Il stocke les éléments dans des paires clé / valeur . Ici, les clés sont des identifiants uniques utilisés pour associer chaque valeur sur une carte.

La HashMapclasse implémente l'interface Map.

Implémentation Java HashMap

Créer un HashMap

Afin de créer une carte de hachage, nous devons d'abord importer le java.util.HashMappackage. Une fois le package importé, voici comment créer des hashmaps en Java.

 // hashMap creation with 8 capacity and 0.6 load factor HashMap numbers = new HashMap();

Dans le code ci-dessus, nous avons créé un hashmap nommé numbers. Ici, K représente le type de clé et V le type de valeurs. Par exemple,

 HashMap numbers = new HashMap();

Ici, le type de clés est Stringet le type de valeurs est Integer.

Exemple 1: créer HashMap en Java

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create a hashmap HashMap languages = new HashMap(); // add elements to hashmap languages.put("Java", 8); languages.put("JavaScript", 1); languages.put("Python", 3); System.out.println("HashMap: " + languages); ) )

Production

 HashMap: (Java = 8, JavaScript = 1, Python = 3)

Dans l'exemple ci-dessus, nous avons créé une HashMaplangue nommée.

Ici, nous avons utilisé la put()méthode pour ajouter des éléments au hashmap. Nous en apprendrons plus sur la put()méthode plus loin dans ce tutoriel.

Opérations de base sur Java HashMap

La HashMapclasse fournit diverses méthodes pour effectuer différentes opérations sur les hashmaps. Nous examinerons certaines opérations d'arraylist couramment utilisées dans ce didacticiel:

  • Ajouter des éléments
  • Éléments d'accès
  • Changer les éléments
  • Supprimer des éléments

1. Ajouter des éléments à un HashMap

Pour ajouter un seul élément au hashmap, nous utilisons la put()méthode de la HashMapclasse. Par exemple,

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create a hashmap HashMap numbers = new HashMap(); System.out.println("Initial HashMap: " + numbers); // put() method to add elements numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("HashMap after put(): " + numbers); ) )

Production

 HashMap initial: () HashMap après put (): (One = 1, Two = 2, Three = 3)

Dans l'exemple ci-dessus, nous avons créé un HashMapnombre nommé. Ici, nous avons utilisé la put()méthode pour ajouter des éléments aux nombres.

Notez la déclaration,

 numbers.put("One", 1);

Ici, nous transmettons la Stringvaleur One comme clé et la Integervaleur 1 comme valeur à la put()méthode.

Lectures recommandées

  • Java HashMap put ()
  • Java HashMap putAll ()
  • Java HashMap putIfAbsent ()

2. Accéder aux éléments HashMap

Nous pouvons utiliser la get()méthode pour accéder à la valeur de la hashmap. Par exemple,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // get() method to get value String value = languages.get(1); System.out.println("Value at index 1: " + value); ) )

Production

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Valeur à l'index 1: Java

Dans l'exemple ci-dessus, notez l'expression,

 languages.get(1);

Ici, la get()méthode prend la clé comme argument et renvoie la valeur correspondante associée à la clé.

Nous pouvons également accéder aux touches , les valeurs et la clé / valeur paires de hashmap que des vues d'ensemble à l' aide keySet(), values()et les entrySet()méthodes respectivement. Par exemple,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // return set view of keys // using keySet() System.out.println("Keys: " + languages.keySet()); // return set view of values // using values() System.out.println("Values: " + languages.values()); // return set view of key/value pairs // using entrySet() System.out.println("Key/Value mappings: " + languages.entrySet()); ) )

Production

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Clés: (1, 2, 3) Valeurs: (Java, Python, JavaScript) Mappages clé / valeur: (1 = Java, 2 = Python, 3 = JavaScript )

Dans l'exemple ci-dessus, nous avons créé un hashmap nommé languages. Ici, nous accédons aux clés , valeurs et mappages clé / valeur à partir du hashmap.

Lectures recommandées

  • Java HashMap get ()
  • Java Hashmap getOrDefault ()
  • Jeu de clés Java HashMap ()
  • Valeurs Java HashMap ()
  • Java HashMap entrySet ()

3. Modifier la valeur de HashMap

Nous pouvons utiliser la replace()méthode pour changer la valeur associée à une clé dans un hashmap. Par exemple,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("Original HashMap: " + languages); // change element with key 2 languages.replace(2, "C++"); System.out.println("HashMap using replace(): " + languages); ) )

Production

 HashMap d'origine: (1 = Java, 2 = Python, 3 = JavaScript) HashMap en utilisant replace (): (1 = Java, 2 = C ++, 3 = JavaScript)

Dans l'exemple ci-dessus, nous avons créé un hashmap nommé languages. Remarquez l'expression,

 languages.replace(2, "C++");

Ici, nous modifions la valeur référencée par la clé 2 avec la nouvelle valeur C ++.

La HashMapclasse fournit également quelques variantes de la replace()méthode. Pour en savoir plus, visitez

  • Remplacer Java HashMap ()
  • Java HashMap replaceAll ()

4. Supprimer les éléments HashMap

Pour supprimer des éléments d'un hashmap, nous pouvons utiliser la méthode remove (). Par exemple,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // remove element associated with key 2 String value = languages.remove(2); System.out.println("Removed value: " + value); System.out.println("Updated HashMap: " + languages); ) )

Production

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Valeur supprimée: Python HashMap mis à jour: (1 = Java, 3 = JavaScript)

Ici, la remove()méthode prend la clé comme paramètre. Il renvoie ensuite la valeur associée à la clé et supprime l' entrée .

Nous ne pouvons également supprimer l'entrée que sous certaines conditions. Par exemple,

 remove(2, "C++");

Here, the remove() method only removes the entry if the key 2 is associated with the value C++. Since 2 is not associated with C++, it doesn't remove the entry.

To learn more, visit Java HashMap remove().

Other Methods of HashMap

Method Description
clear() removes all mappings from the HashMap
compute() computes a new value for the specified key
computeIfAbsent() computes value if a mapping for the key is not present
computeIfPresent() computes a value for mapping if the key is present
merge() merges the specified mapping to the HashMap
clone() makes the copy of the HashMap
containsKey() checks if the specified key is present in Hashmap
containsValue() checks if Hashmap contains the specified value
size() returns the number of items in HashMap
isEmpty() checks if the Hashmap is empty

Iterate through a HashMap

To iterate through each entry of the hashmap, we can use Java for-each loop. We can iterate through keys only, vales only, and key/value mapping. For example,

 import java.util.HashMap; import java.util.Map.Entry; class Main ( public static void main(String() args) ( // create a HashMap HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // iterate through keys only System.out.print("Keys: "); for (Integer key : languages.keySet()) ( System.out.print(key); System.out.print(", "); ) // iterate through values only System.out.print("Values: "); for (String value : languages.values()) ( System.out.print(value); System.out.print(", "); ) // iterate through key/value entries System.out.print("Entries: "); for (Entry entry : languages.entrySet()) ( System.out.print(entry); System.out.print(", "); ) ) )

Output

 HashMap: (1=Java, 2=Python, 3=JavaScript) Keys: 1, 2, 3, Values: Java, Python, JavaScript, Entries: 1=Java, 2=Python, 3=JavaScript,

Note that we have used the Map.Entry in the above example. It is the nested class of the Map interface that returns a view (elements) of the map.

We first need to import the java.util.Map.Entry package in order to use this class.

This nested class returns a view (elements) of the map.

Creating HashMap from Other Maps

In Java, we can also create a hashmap from other maps. For example,

 import java.util.HashMap; import java.util.TreeMap; class Main ( public static void main(String() args) ( // create a treemap TreeMap evenNumbers = new TreeMap(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("TreeMap: " + evenNumbers); // create hashmap from the treemap HashMap numbers = new HashMap(evenNumbers); numbers.put("Three", 3); System.out.println("HashMap: " + numbers); ) )

Output

 TreeMap: (Four=4, Two=2) HashMap: (Two=2, Three=3, Four=4)

In the above example, we have created a TreeMap named evenNumbers. Notice the expression,

 numbers = new HashMap(evenNumbers)

Here, we are creating a HashMap named numbers using the TreeMap. To learn more about treemap, visit Java TreeMap.

Note: While creating a hashmap, we can include optional parameters: capacity and load factor. For example,

 HashMap numbers = new HashMap(8, 0.6f);

Here,

  • 8 (capacity is 8) - This means it can store 8 entries.
  • 0.6f (load factor is 0.6) - This means whenever our hash table is filled by 60%, the entries are moved to a new hash table double the size of the original hash table.

Si les paramètres facultatifs ne sont pas utilisés, la capacité par défaut sera de 16 et le facteur de charge par défaut sera de 0,75 .

Articles intéressants...