In deze zelfstudie leren we met behulp van voorbeelden over de Java HashMap-klasse en de verschillende bewerkingen ervan.
De HashMap
klasse van het Java-verzamelingsraamwerk biedt de functionaliteit van de datastructuur van de hashtabel.
Het slaat elementen op in sleutel / waarde- paren. Hier zijn sleutels unieke ID's die worden gebruikt om elke waarde op een kaart te associëren .
De HashMap
klasse implementeert de kaartinterface.
![](https://cdn.wiki-base.com/7339188/java_hashmap_with_examples.png.webp)
Maak een HashMap
Om een hash-map te maken, moeten we het java.util.HashMap
pakket eerst importeren . Zodra we het pakket hebben geïmporteerd, is hier hoe we hashmaps in Java kunnen maken.
// hashMap creation with 8 capacity and 0.6 load factor HashMap numbers = new HashMap();
In de bovenstaande code hebben we een hashmap gemaakt met de naam numbers. Hier staat K voor het sleuteltype en V voor het type waarden. Bijvoorbeeld,
HashMap numbers = new HashMap();
Hier, de aard van de toetsen is String
en de aard van waarden is Integer
.
Voorbeeld 1: maak 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); ) )
Uitvoer
HashMap: (Java = 8, JavaScript = 1, Python = 3)
In het bovenstaande voorbeeld hebben we een HashMap
benoemde taal gemaakt.
Hier hebben we de put()
methode gebruikt om elementen aan de hashmap toe te voegen. We zullen put()
later in deze tutorial meer over de methode leren .
Basisbewerkingen op Java HashMap
De HashMap
klasse biedt verschillende methoden om verschillende bewerkingen op hashmaps uit te voeren. In deze tutorial zullen we enkele veelgebruikte arraylist-bewerkingen bekijken:
- Voeg elementen toe
- Toegang tot elementen
- Verander elementen
- Elementen verwijderen
1. Voeg elementen toe aan een HashMap
Om een enkel element aan de hashmap toe te voegen, gebruiken we de put()
methode van de HashMap
klasse. Bijvoorbeeld,
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); ) )
Uitvoer
Initiële HashMap: () HashMap na put (): (One = 1, Two = 2, Three = 3)
In het bovenstaande voorbeeld hebben we een HashMap
benoemde nummers gemaakt. Hier hebben we de put()
methode gebruikt om elementen aan getallen toe te voegen.
Let op de verklaring,
numbers.put("One", 1);
Hier geven we de String
waarde One door als de sleutel en Integer
waarde 1 als de waarde aan de put()
methode.
Aanbevolen metingen
- Java HashMap put ()
- Java HashMap putAll ()
- Java HashMap putIfAbsent ()
2. Toegang tot HashMap-elementen
We kunnen de get()
methode gebruiken om toegang te krijgen tot de waarde van de hashmap. Bijvoorbeeld,
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); ) )
Uitvoer
HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Waarde bij index 1: Java
Let in het bovenstaande voorbeeld op de uitdrukking,
languages.get(1);
Hier neemt de get()
methode de sleutel als argument en retourneert de overeenkomstige waarde die aan de sleutel is gekoppeld.
We kunnen ook toegang tot de sleutels , waarden en sleutel / waarde paren van de HashMap als set uitzicht op het gebruik keySet()
, values()
en entrySet()
respectievelijk methoden. Bijvoorbeeld,
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()); ) )
Uitvoer
HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Sleutels: (1, 2, 3) Waarden: (Java, Python, JavaScript) Sleutel- / waardetoewijzingen: (1 = Java, 2 = Python, 3 = JavaScript )
In het bovenstaande voorbeeld hebben we een hashmap gemaakt met de naam talen. Hier hebben we toegang tot de sleutels , waarden en sleutel / waarde- toewijzingen van de hashmap.
Aanbevolen metingen
- Java HashMap get ()
- Java Hashmap getOrDefault ()
- Java HashMap keySet ()
- Java HashMap-waarden ()
- Java HashMap entrySet ()
3. Wijzig de waarde van HashMap
We kunnen de replace()
methode gebruiken om de waarde te wijzigen die aan een sleutel in een hashmap is gekoppeld. Bijvoorbeeld,
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); ) )
Uitvoer
Originele HashMap: (1 = Java, 2 = Python, 3 = JavaScript) HashMap met replace (): (1 = Java, 2 = C ++, 3 = JavaScript)
In het bovenstaande voorbeeld hebben we een hashmap gemaakt met de naam talen. Let op de uitdrukking,
languages.replace(2, "C++");
Hier veranderen we de waarde waarnaar wordt verwezen door sleutel 2 met de nieuwe waarde C ++.
The HashMap
class also provides some variations of the replace()
method. To learn more, visit
- Java HashMap replace()
- Java HashMap replaceAll()
4. Remove HashMap Elements
To remove elements from a hashmap, we can use the remove() method. For example,
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); ) )
Output
HashMap: (1=Java, 2=Python, 3=JavaScript) Removed value: Python Updated HashMap: (1=Java, 3=JavaScript)
Here, the remove()
method takes the key as its parameter. It then returns the value associated with the key and removes the entry.
We can also remove the entry only under certain conditions. For example,
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.
Als de optionele parameters niet gebruikt, dan wordt de huidige capaciteit zal 16 en de standaard belastingfactor wordt 0,75 .