Java HashMap (con esempi)

In questo tutorial, impareremo la classe Java HashMap e le sue varie operazioni con l'aiuto di esempi.

La HashMapclasse del framework delle collezioni Java fornisce la funzionalità della struttura dei dati della tabella hash.

Memorizza gli elementi in coppie chiave / valore . In questo caso, le chiavi sono identificatori univoci utilizzati per associare ogni valore su una mappa.

La HashMapclasse implementa l'interfaccia Map.

Implementazione di Java HashMap

Crea una HashMap

Per creare una mappa hash, dobbiamo java.util.HashMapprima importare il pacchetto. Una volta importato il pacchetto, ecco come possiamo creare hashmap in Java.

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

Nel codice sopra, abbiamo creato una hashmap denominata numeri. Qui, K rappresenta il tipo di chiave e V rappresenta il tipo di valori. Per esempio,

 HashMap numbers = new HashMap();

Qui, il tipo di chiavi è Stringe il tipo di valori è Integer.

Esempio 1: crea HashMap in 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); ) )

Produzione

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

Nell'esempio sopra, abbiamo creato una HashMaplingua con nome.

Qui abbiamo utilizzato il put()metodo per aggiungere elementi alla hashmap. Impareremo di più sul put()metodo più avanti in questo tutorial.

Operazioni di base su Java HashMap

La HashMapclasse fornisce vari metodi per eseguire diverse operazioni sulle hashmap. In questo tutorial esamineremo alcune operazioni di elenchi di array comunemente utilizzate:

  • Aggiungi elementi
  • Elementi di accesso
  • Cambia elementi
  • Rimuovi elementi

1. Aggiungere elementi a una HashMap

Per aggiungere un singolo elemento alla hashmap, usiamo il put()metodo della HashMapclasse. Per esempio,

 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); ) )

Produzione

 HashMap iniziale: () HashMap dopo put (): (Uno = 1, Due = 2, Tre = 3)

Nell'esempio sopra, abbiamo creato un HashMapnumero con nome. Qui abbiamo utilizzato il put()metodo per aggiungere elementi ai numeri.

Notare la dichiarazione,

 numbers.put("One", 1);

Qui, stiamo passando il Stringvalore Uno come chiave e il Integervalore 1 come valore al put()metodo.

Letture consigliate

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

2. Accedi a HashMap Elements

Possiamo usare il get()metodo per accedere al valore dall'hashmap. Per esempio,

 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); ) )

Produzione

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Valore all'indice 1: Java

Nell'esempio sopra, nota l'espressione,

 languages.get(1);

Qui, il get()metodo prende la chiave come argomento e restituisce il valore corrispondente associato alla chiave.

Possiamo anche accedere alle chiavi , valori e chiave / valore coppie del hashmap come viste insieme utilizzando keySet(), values()e entrySet()metodi rispettivamente. Per esempio,

 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()); ) )

Produzione

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Chiavi: (1, 2, 3) Valori: (Java, Python, JavaScript) Mappature chiave / valore: (1 = Java, 2 = Python, 3 = JavaScript )

Nell'esempio precedente, abbiamo creato una hashmap denominata languages. Qui stiamo accedendo a chiavi , valori e mappature chiave / valore dalla hashmap.

Letture consigliate

  • Java HashMap get ()
  • Java Hashmap getOrDefault ()
  • Java HashMap keySet ()
  • Valori Java HashMap ()
  • Java HashMap entrySet ()

3. Modificare il valore HashMap

Possiamo utilizzare il replace()metodo per modificare il valore associato a una chiave in una hashmap. Per esempio,

 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); ) )

Produzione

 HashMap originale: (1 = Java, 2 = Python, 3 = JavaScript) HashMap utilizzando replace (): (1 = Java, 2 = C ++, 3 = JavaScript)

Nell'esempio precedente, abbiamo creato una hashmap denominata languages. Notare l'espressione,

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

Qui, stiamo cambiando il valore a cui fa riferimento la chiave 2 con il nuovo valore C ++.

La HashMapclasse fornisce anche alcune varianti del replace()metodo. Per saperne di più, visita

  • Java HashMap sostituire ()
  • Java HashMap replaceAll ()

4. Rimuovere gli elementi HashMap

Per rimuovere elementi da una hashmap, possiamo usare il metodo remove (). Per esempio,

 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); ) )

Produzione

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Valore rimosso: Python HashMap aggiornato: (1 = Java, 3 = JavaScript)

Qui, il remove()metodo prende la chiave come parametro. Quindi restituisce il valore associato alla chiave e rimuove la voce .

Possiamo anche rimuovere la voce solo a determinate condizioni. Per esempio,

 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.

Se i parametri opzionali non vengono utilizzati, la capacità predefinita sarà 16 e il fattore di carico predefinito sarà 0,75 .

Articoli interessanti...