Java HashMap
Java HashMap
In deze zelfstudie leren we over de Java HashMap-klasse en zijn verschillende bewerkingen met behulp van voorbeelden.
De HashMap
klasse van het Java-verzamelingsraamwerk biedt de functionaliteit van de hash-tabelgegevensstructuur.
Het slaat elementen op in sleutel/waarde paren. Hier, sleutels zijn unieke ID's die worden gebruikt om elke waarde . te koppelen op een kaart.
De HashMap
class implementeert de kaartinterface.
Maak een HashMap
Om een hash-kaart te maken, moeten we de java.util.HashMap
. importeren pakket eerst. Zodra we het pakket hebben geïmporteerd, kunnen we als volgt hashmaps maken in Java.
// hashMap creation with 8 capacity and 0.6 load factor
HashMap<K, V> numbers = new HashMap<>();
In de bovenstaande code hebben we een hashmap gemaakt met de naam nummers . Hier, K staat voor het sleuteltype en V geeft het type waarden weer. Bijvoorbeeld,
HashMap<String, Integer> numbers = new HashMap<>();
Hier, het type sleutels is String
en het type waarden is Integer
.
Voorbeeld 1:HashMap maken in Java
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// create a hashmap
HashMap<String, Integer> 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
. gemaakt genaamd talen .
Hier hebben we de put()
. gebruikt methode om elementen aan de hashmap toe te voegen. We zullen meer leren over de put()
methode verderop in deze tutorial.
Basisbewerkingen op Java HashMap
De HashMap
class biedt verschillende methoden om verschillende bewerkingen op hashmaps uit te voeren. We zullen in deze tutorial kijken naar enkele veelgebruikte arraylist-bewerkingen:
- Elementen toevoegen
- Toegangselementen
- Verander elementen
- Elementen verwijderen
1. Elementen toevoegen aan een HashMap
Om een enkel element aan de hashmap toe te voegen, gebruiken we de put()
methode van de HashMap
klas. Bijvoorbeeld,
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// create a hashmap
HashMap<String, Integer> 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
Initial HashMap: {} HashMap after put(): {One=1, Two=2, Three=3}
In het bovenstaande voorbeeld hebben we een HashMap
. gemaakt met de naam nummers . Hier hebben we de put()
. gebruikt methode om elementen aan getallen toe te voegen.
Let op de verklaring,
numbers.put("One", 1);
Hier passeren we de String
waarde Eén als de sleutel en Integer
waarde 1 als de waarde voor de put()
methode.
Aanbevolen metingen
- Java HashMap put()
- Java HashMap putAll()
- Java HashMap putIfAbsent()
2. Toegang tot HashMap-elementen
We kunnen de get()
. gebruiken methode om toegang te krijgen tot de waarde van de hashmap. Bijvoorbeeld,
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<Integer, String> 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} Value at index 1: Java
Let in het bovenstaande voorbeeld op de uitdrukking,
languages.get(1);
Hier, de get()
methode neemt de sleutel als zijn argument en retourneert de corresponderende waarde gekoppeld aan de sleutel.
We hebben ook toegang tot de sleutels , waarden , en sleutel/waarde paren van de hashmap als setweergaven met behulp van keySet()
, values()
, en entrySet()
respectievelijk methoden. Bijvoorbeeld,
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<Integer, String> 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} Keys: [1, 2, 3] Values: [Java, Python, JavaScript] Key/Value mappings: [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. HashMap-waarde wijzigen
We kunnen de replace()
. gebruiken methode om de waarde die is gekoppeld aan een sleutel in een hashmap te wijzigen. Bijvoorbeeld,
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<Integer, String> 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
Original HashMap: {1=Java, 2=Python, 3=JavaScript} HashMap using 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 wijzigen we de waarde waarnaar wordt verwezen door sleutel 2 met de nieuwe waarde C++ .
De HashMap
class biedt ook enkele variaties van de replace()
methode. Ga voor meer informatie naar
- Java HashMap Replace()
- Java HashMap ReplaceAll()
4. HashMap-elementen verwijderen
Om elementen uit een hashmap te verwijderen, kunnen we de methode remove() gebruiken. Bijvoorbeeld,
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<Integer, String> 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);
}
}
Uitvoer
HashMap: {1=Java, 2=Python, 3=JavaScript} Removed value: Python Updated HashMap: {1=Java, 3=JavaScript}
Hier, de remove()
methode neemt de sleutel als zijn parameter. Het retourneert dan de waarde gekoppeld aan de sleutel en verwijdert de invoer .
We kunnen de vermelding ook alleen onder bepaalde voorwaarden verwijderen. Bijvoorbeeld,
remove(2, "C++");
Hier, de remove()
methode verwijdert alleen de invoer als de toets 2 wordt geassocieerd met de waarde C++ . Sinds 2 is niet geassocieerd met C++ , het verwijdert de invoer niet.
Ga voor meer informatie naar Java HashMap remove().
Andere methoden van HashMap
Methode | Beschrijving |
---|---|
clear() | verwijdert alle toewijzingen van de HashMap |
berekenen() | berekent een nieuwe waarde voor de opgegeven sleutel |
computeIfAbsent() | berekent waarde als een toewijzing voor de sleutel niet aanwezig is |
computeIfPresent() | berekent een waarde voor toewijzing als de sleutel aanwezig is |
samenvoegen() | voegt de gespecificeerde toewijzing samen met de HashMap |
kloon() | maakt de kopie van de HashMap |
bevatKey() | controleert of de opgegeven sleutel aanwezig is in Hashmap |
bevatValue() | controleert of Hashmap bevat de opgegeven waarde |
maat() | retourneert het aantal items in HashMap |
isEmpty() | controleert of de Hashmap is leeg |
Herhaal door een HashMap
Om elk item van de hashmap te doorlopen, kunnen we Java for-each-lus gebruiken. We kunnen itereren via alleen sleutels , alleen valleien , en sleutel/waarde-toewijzing . Bijvoorbeeld,
import java.util.HashMap;
import java.util.Map.Entry;
class Main {
public static void main(String[] args) {
// create a HashMap
HashMap<Integer, String> 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("\nValues: ");
for (String value : languages.values()) {
System.out.print(value);
System.out.print(", ");
}
// iterate through key/value entries
System.out.print("\nEntries: ");
for (Entry<Integer, String> entry : languages.entrySet()) {
System.out.print(entry);
System.out.print(", ");
}
}
}
Uitvoer
HashMap: {1=Java, 2=Python, 3=JavaScript} Keys: 1, 2, 3, Values: Java, Python, JavaScript, Entries: 1=Java, 2=Python, 3=JavaScript,
Merk op dat we de Map.Entry
. hebben gebruikt in het bovenstaande voorbeeld. Het is de geneste klasse van de Map
interface die een weergave (elementen) van de kaart retourneert.
We moeten eerst de java.util.Map.Entry
. importeren pakket om deze klasse te gebruiken.
Deze geneste klasse retourneert een weergave (elementen) van de kaart.
HashMap maken van andere kaarten
In Java kunnen we ook een hashmap maken van andere kaarten. Bijvoorbeeld,
import java.util.HashMap;
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
// create a treemap
TreeMap<String, Integer> evenNumbers = new TreeMap<>();
evenNumbers.put("Two", 2);
evenNumbers.put("Four", 4);
System.out.println("TreeMap: " + evenNumbers);
// create hashmap from the treemap
HashMap<String, Integer> numbers = new HashMap<>(evenNumbers);
numbers.put("Three", 3);
System.out.println("HashMap: " + numbers);
}
}
Uitvoer
TreeMap: {Four=4, Two=2} HashMap: {Two=2, Three=3, Four=4}
In het bovenstaande voorbeeld hebben we een TreeMap
. gemaakt genaamd evenNumbers
. Let op de uitdrukking,
numbers = new HashMap<>(evenNumbers)
Hier maken we een HashMap
benoemde nummers met de TreeMap
. Ga voor meer informatie over treemap naar Java TreeMap.
Opmerking :Bij het maken van een hashmap kunnen we optionele parameters opnemen:capaciteit en belastingsfactor . Bijvoorbeeld,
HashMap<K, V> numbers = new HashMap<>(8, 0.6f);
Hier,
- 8 (capaciteit is 8) - Dit betekent dat er 8 items kunnen worden opgeslagen.
- 0.6f (laadfactor is 0,6) - Dit betekent dat wanneer onze hashtabel voor 60% is gevuld, de items worden verplaatst naar een nieuwe hashtabel die twee keer zo groot is als de originele hashtabel.
Als de optionele parameters niet worden gebruikt, dan is de standaard capaciteit wordt 16 en de standaard belastingsfactor zal 0,75 . zijn .
Java