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

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

  1. Java-operators
  2. Java-opmerkingen
  3. Java if... else-instructie
  4. Java voor elke lus
  5. Java-strings
  6. Java-interface
  7. Java anonieme klasse
  8. Java proberen-met-bronnen
  9. Java-annotaties
  10. Java-beweringen
  11. Java-vector