Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

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.

Java HashMap beheersen: Operaties, voorbeelden en best practices

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

MethodeBeschrijving
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

  1. Java-operators beheersen: typen, syntax en praktische voorbeelden
  2. Java-commentaar: typen, gebruik en best practices
  3. Java if…else beheersen: control flow uitgelegd
  4. Java Enhanced For-lus beheersen: syntax, voorbeelden en best practices
  5. Java Strings beheersen: aanmaken, methodes en best practices
  6. Java interfaces meesteren: concepten, implementatie en best practices
  7. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  8. Java Try-with-resources meesteren: automatische resource management uitgelegd
  9. Java Annotaties uitgelegd: typen, plaatsing en praktische voorbeelden
  10. Java Assertions: een praktische gids voor bugdetectie en codebetrouwbaarheid
  11. Java Vector begrijpen: Gebruik, Kenmerken en Vergelijking met ArrayList