Java HashMap beheersen: Operaties, voorbeelden en best practices
Java HashMap beheersen
Verken de Java HashMap-klasse – de kernfeatures, veelvoorkomende operaties en praktische voorbeelden – zodat je deze met vertrouwen in real-world applicaties kunt gebruiken.
De HashMap-klasse, onderdeel van Java's collections framework, implementeert een hash-tabel die data opslaat in key/value-paren. Elke key is uniek en fungeert als identifier voor de geassocieerde waarde. De klasse implementeert de Map-interface, wat een veelzijdige API biedt voor datamanipulatie.

Een HashMap aanmaken
Begin met importeren van het java.util.HashMap-pakket:
import java.util.HashMap;
Instantieer de map. Je kunt een generiek keytype K en valuetype V specificeren, of vertrouwen op type-inferentie:
HashMap<K, V> numbers = new HashMap<>();
Voorbeeld met concrete types:
HashMap<String, Integer> numbers = new HashMap<>();
Voorbeeld 1: Basis HashMap-aanmaak
import java.util.HashMap; class Main { public static void main(String[] args) { HashMap<String, Integer> languages = new HashMap<>(); languages.put("Java", 8); languages.put("JavaScript", 1); languages.put("Python", 3); System.out.println("HashMap: " + languages); } }
Output
HashMap: {Java=8, JavaScript=1, Python=3}
Kernoperaties op HashMap
De HashMap-klasse biedt een rijke set methoden. Hieronder dekken we de meest frequente:
- Elementen toevoegen
- Elementen benaderen
- Elementen bijwerken
- Elementen verwijderen
1. Elementen toevoegen
Gebruik put() om een key/value-paar in te voegen. Als de key al bestaat, wordt de waarde vervangen.
import java.util.HashMap; class Main { public static void main(String[] args) { HashMap<String, Integer> numbers = new HashMap<>(); System.out.println("Initiële HashMap: " + numbers); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("HashMap na put(): " + numbers); } }
Output
Initiële HashMap: {} HashMap na put(): {One=1, Two=2, Three=3}
Key: String, Value: Integer in dit voorbeeld.
2. Elementen benaderen
Haal een waarde op met get(key). De methode retourneert null als de key afwezig is.
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); String value = languages.get(1); System.out.println("Waarde op key 1: " + value); } }
Output
HashMap: {1=Java, 2=Python, 3=JavaScript} Waarde op key 1: Java
Je kunt ook de complete key-set, value-collectie of entry-set verkrijgen via keySet(), values() en entrySet():
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); System.out.println("Keys: " + languages.keySet()); System.out.println("Values: " + languages.values()); System.out.println("Entries: " + languages.entrySet()); } }
Output
HashMap: {1=Java, 2=Python, 3=JavaScript} Keys: [1, 2, 3] Values: [Java, Python, JavaScript] Entries: [1=Java, 2=Python, 3=JavaScript]
3. Waarden bijwerken
De replace(key, newValue)-methode vervangt de bestaande waarde voor de gegeven key. Het retourneert de oude waarde of null als de key afwezig was.
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("Originele HashMap: " + languages); languages.replace(2, "C++"); System.out.println("Na replace(): " + languages); } }
Output
Originele HashMap: {1=Java, 2=Python, 3=JavaScript} Na replace(): {1=Java, 2=C++, 3=JavaScript}
4. Elementen verwijderen
Verwijder een mapping met remove(key), wat de verwijderde waarde retourneert. Voor conditionele verwijdering, gebruik remove(key, value), wat alleen verwijdert als de huidige mapping matcht met de gespecificeerde waarde.
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); String removed = languages.remove(2); System.out.println("Verwijderde waarde: " + removed); System.out.println("Bijgewerkte HashMap: " + languages); } }
Output
HashMap: {1=Java, 2=Python, 3=JavaScript} Verwijderde waarde: Python Bijgewerkte HashMap: {1=Java, 3=JavaScript}
Aanvullende HashMap-methoden
| Methode | Beschrijving |
|---|---|
| clear() | Verwijdert alle mappings |
| compute() | Berekent een nieuwe waarde voor een key |
| computeIfAbsent() | Berekent waarde alleen als key ontbreekt |
| computeIfPresent() | Berekent waarde alleen als key bestaat |
| merge() | Voegt een nieuwe mapping samen met een bestaande |
| clone() | Maakt een shallow copy |
| containsKey() | Controleert op specifieke key |
| containsValue() | Controleert op specifieke waarde |
| size() | Aantal key/value-paren |
| isEmpty() | Of de map leeg is |
Itereren door een HashMap
Gebruik een for-each loop om keys, values of entries te doorlopen. Importeer java.util.Map.Entry voor entry-iteratie.
import java.util.HashMap; import java.util.Map.Entry; 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); System.out.print("Keys: "); for (Integer key : languages.keySet()) { System.out.print(key + ", "); } System.out.print("\nValues: "); for (String value : languages.values()) { System.out.print(value + ", "); } System.out.print("\nEntries: "); for (Entry<Integer, String> entry : languages.entrySet()) { System.out.print(entry + ", "); } } }
Output
HashMap: {1=Java, 2=Python, 3=JavaScript} Keys: 1, 2, 3, Values: Java, Python, JavaScript, Entries: 1=Java, 2=Python, 3=JavaScript,
Een HashMap aanmaken vanuit een andere Map
Instantieer een HashMap met de inhoud van een bestaande map:
import java.util.HashMap; import java.util.TreeMap; class Main { public static void main(String[] args) { TreeMap<String, Integer> evenNumbers = new TreeMap<>(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("TreeMap: " + evenNumbers); HashMap<String, Integer> 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}
Optionele constructorparameters stellen je in staat de initiële capaciteit en load factor in te stellen:
HashMap<K, V> numbers = new HashMap<>(8, 0.6f);
- Capaciteit: 8 entries voordat rehashing plaatsvindt.
- Load factor: 0.6 triggert een resize wanneer 60% vol.
Standaardwaarden zijn capacity = 16 en load factor = 0.75.
Voor diepere duiken, raadpleeg de officiële Java-documentatie of autoritatieve bronnen zoals "Effective Java" door Joshua Bloch.
Java
- Java-operators beheersen: typen, syntax en praktische voorbeelden
- Java-commentaar: typen, gebruik en best practices
- Java if…else beheersen: control flow uitgelegd
- Java Enhanced For-lus beheersen: syntax, voorbeelden en best practices
- Java Strings beheersen: aanmaken, methodes en best practices
- Java interfaces meesteren: concepten, implementatie en best practices
- Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
- Java Try-with-resources meesteren: automatische resource management uitgelegd
- Java Annotaties uitgelegd: typen, plaatsing en praktische voorbeelden
- Java Assertions: een praktische gids voor bugdetectie en codebetrouwbaarheid
- Java Vector begrijpen: Gebruik, Kenmerken en Vergelijking met ArrayList