ConcurrentHashMap vs. Hashtable in Java

Mohammad Irfan 12 Oktober 2023
  1. ConcurrentHashMap in Java erstellen
  2. HashTable in Java erstellen
ConcurrentHashMap vs. Hashtable in Java

Dieses Tutorial stellt den Unterschied zwischen ConcurrentHashMap und Hashtable in Java vor.

ConcurrentHashMap ist eine Klasse, die zum Framework java.util.concurrent gehört. Es implementiert ConcurrentMap und eine serialisierbare Schnittstelle. Es wird verwendet, um Daten threadsicher zu speichern. Es verwendet mehrere Buckets, um Daten zu speichern. Die Deklarationssyntax dafür ist:

public class ConcurrentHashMap<K, V>
    extends AbstractMap<K, V> implements ConcurrentMap<K, V>, Serializable

ConcurrentHashMap-Schlüsselpunkte

  • Es ist Thread-sicher.
  • Es verwendet mehrere Sperren auf Segmentebene anstelle der gesamten Karte.
  • Es verwendet standardmäßig 16 Schlösser.
  • Es gilt nur für Updates zu sperren. Zum Lesen ermöglicht es mehreren Threads, auf die Daten zuzugreifen.

Sehen wir uns ein Beispiel für ConcurrentHashMap an.

ConcurrentHashMap in Java erstellen

In diesem Beispiel haben wir eine ConcurrentHashMap erstellt, die Daten vom Typ String und Integer enthält. Wir haben die Methode put() verwendet, um Elemente hinzuzufügen, und die Methoden getKey() und getValue(), um auf Schlüssel bzw. Wert zuzugreifen. Siehe das Beispiel unten.

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class SimpleTesting {
  ConcurrentHashMap<String, Integer> hm = new ConcurrentHashMap<String, Integer>();
  public void AddScore(String name, int score) {
    hm.put(name, score);
  }
  public static void main(String[] args) {
    SimpleTesting simpleTesting = new SimpleTesting();
    simpleTesting.AddScore("Rohan", 95);
    simpleTesting.AddScore("Sohan", 85);
    simpleTesting.AddScore("Mohan", 93);
    simpleTesting.AddScore("Lohan", 91);
    System.out.println("Students Scores: ");
    for (Map.Entry<String, Integer> entry : simpleTesting.hm.entrySet()) {
      System.out.println(entry.getKey() + " - " + entry.getValue());
    }
  }
}

Ausgabe:

Students Scores: 
Lohan - 91
Mohan - 93
Sohan - 85
Rohan - 95

HashTable ist eine Klasse, die zum Java-Collection-Framework gehört. Es wird verwendet, um Daten in Schlüssel-Wert-Paaren zu speichern. Es implementiert Map-, Cloneable- und Serializable-Schnittstellen. Die Klassendeklaration ist unten angegeben.

public class Hashtable<K, V> extends Dictionary<K, V> implements Map<K, V>, Cloneable, Serializable

HashTable-Schlüsselpunkte:

  • Es verwendet eine einzige Sperre für die gesamten Daten.
  • Es ist Thread-sicher, d. h. synchronisiert.
  • Es erlaubt keine Nullschlüssel oder -werte.

Sehen wir uns ein Beispiel für HashTable an.

HashTable in Java erstellen

In diesem Beispiel haben wir eine HashTable erstellt, die Daten vom Typ String und Integer speichert. Wir haben die Methode put() verwendet, um Elemente hinzuzufügen, und die Methode getKey() und die Methode getValue(), um auf Schlüssel bzw. Wert zuzugreifen. Siehe das Beispiel unten.

import java.util.Hashtable;
import java.util.Map;

public class SimpleTesting {
  Hashtable<String, Integer> hm = new Hashtable<String, Integer>();
  public void AddScore(String name, int score) {
    hm.put(name, score);
  }
  public static void main(String[] args) {
    SimpleTesting simpleTesting = new SimpleTesting();
    simpleTesting.AddScore("Rohan", 95);
    simpleTesting.AddScore("Sohan", 85);
    simpleTesting.AddScore("Mohan", 93);
    simpleTesting.AddScore("Lohan", 91);
    System.out.println("Students Scores: ");
    for (Map.Entry<String, Integer> entry : simpleTesting.hm.entrySet()) {
      System.out.println(entry.getKey() + " - " + entry.getValue());
    }
  }
}

Ausgabe:

Students Scores: 
Rohan - 95
Mohan - 93
Sohan - 85
Lohan - 91