Heim > Java > javaLernprogramm > Unterschied zwischen Hashtable und synchronisierter Karte in Java

Unterschied zwischen Hashtable und synchronisierter Karte in Java

Barbara Streisand
Freigeben: 2025-02-07 11:45:11
Original
667 Leute haben es durchsucht

Difference Between Hashtable and Synchronized Map in Java

In diesem Artikel wird die wichtigsten Unterscheidungen zwischen Javas Hashtable und SynchronizedMap untersucht. Ein Hashtable effizient ordnet die Schlüssel zu Werten mit einem Array von Slots zu, auf die über die Indexberechnung zugegriffen wird, und liefert ein schnelles Abrufen von Daten. Umgekehrt synchronisiert ein SynchronizedMap eine Karte, um die Sicherheit der Gewinde zu gewährleisten und gleichzeitig zugänglich zu Problemen zu werden. Entscheidend ist, SynchronizedMap keine Nullwerte zuzulassen.

Eingabebeispiel

<code>[ARB, RDD, KOL, DHKA]</code>
Nach dem Login kopieren
Nach dem Login kopieren

Ausgabebeispiel

<code>Hashtable Insertion Order: [ARB, RDD, KOL, DHKA]
SynchronizedMap Insertion Order: [ARB, RDD, DHKA, KOL]</code>
Nach dem Login kopieren

Methodik

Der Vergleich umfasst die Analyse der Insertionsreihenfolge mithilfe von Arraylisten und Sets, um die Element -Platzierung zu verfolgen. Für die iterative Verarbeitung wird eine zeitgesteuerte Schleife verwendet.

Algorithmus Schritte:

  1. Initialisieren Sie Eingabe-/Ausgabestreams.
  2. erforderliche Klassen importieren und Funktionen definieren.
  3. Erstellen Sie eine öffentliche Klasse.
  4. Funktionen für die Verfolgung der Einfügungsreihenfolge definieren.
  5. eine ArrayList mit Eingabedaten populieren.
  6. Verwenden Sie Sätze (z. B. LinkedHashset für die Einhaltung der Einführung), um Daten zu verwalten.
  7. Printinsertionsreihenfolge für sowohl Hashtable als auch SynchronizedMap.
  8. Implementieren Sie eine zeitgesteuerte Schleife für die iterative Verarbeitung.
  9. die Ergebnisse ausgeben.

syntax Beispiel (veranschaulichend)

Das folgende Ausschnitt zeigt die Verwendung von TreeSet, IdentityHashMap und anderen relevanten Klassen, um die Konzepte zu veranschaulichen. Beachten Sie, dass dies ein vereinfachtes Beispiel ist und keine vollständige Implementierung des oben beschriebenen Algorithmus.

TreeSet<Integer> stTree = new TreeSet<>();
stTree.add(4); stTree.add(5); stTree.add(6); stTree.add(8); stTree.add(4);

IdentityHashMap<Integer, String> ihmap = new IdentityHashMap<>();
ihmap.put(10, "ARB"); ihmap.put(20, "RDD"); ihmap.put(30, "ARBRDD");
ihmap.put(40, "KOLDHKA"); ihmap.put(50, "You");

System.out.println("IdentityHashMap size: " + ihmap.size());
System.out.println("Initial IdentityHashMap: " + ihmap);

Hashtable<Integer, String> table = new Hashtable<>();
table.put(1, "X"); table.put(2, "Y"); table.put(3, "Z"); table.put(4, "A");

for (Map.Entry<Integer, String> m : table.entrySet()) {
    Iterator<Map.Entry<Integer, String>> itr = ihmap.entrySet().iterator();
    while (itr.hasNext()) {
        IdentityHashMap.Entry<Integer, String> entry = itr.next();
        TreeMap<Integer, Integer> maptree = new TreeMap<>();
        maptree.put(2, 5); maptree.put(3, 6); maptree.put(4, 6); maptree.put(2, 3);
    }
}
Nach dem Login kopieren

Hashtable vs. SynchronizedMap Vergleich

Feature
Feature Hashtable SynchronizedMap
Data Structure Uses a hash table for key-value storage. Wraps an existing map for thread safety.
Element Order Arbitrary Retains the original map's insertion order.
Thread Safety Inherently synchronized (can be slow). Synchronized using Collections.synchronizedMap()
Performance Can be slower due to inherent synchronization. Performance overhead due to synchronization.
Null Values Does not allow null keys or values. Inherits null value handling from wrapped map.
<🎜> Datenstruktur verwendet eine Hash-Tabelle für den Schlüsselwertspeicher. Wickelt eine vorhandene Karte zur Gewindesicherheit. Elementorder willkürlich behält die Insertionsreihenfolge der ursprünglichen Karte bei. Thread Safety von Natur aus synchronisiert (kann langsam sein). synchronisiert mit collectionss.synchronizedMap () Leistung kann aufgrund der inhärenten Synchronisation langsamer sein. Leistungsaufwand aufgrund von Synchronisation. Nullwerte erlaubt keine Nullschlüssel oder Werte. erbt Nullwerthandhabung von Wicked Map.

Hashtable bietet integrierte Gewindesicherheit, kann jedoch Leistungsstrafen erleiden. SynchronizedMap bietet einen flexibleren Ansatz, mit dem Sie jegliche Kartenimplementierung synchronisieren können, jedoch einen Leistungsaufwand einführt. Hashtable wird allgemein als Legacy -Klasse angesehen, und SynchronizedMap oder gleichzeitige Sammlungen (wie ConcurrentHashMap) werden für die moderne Java -Entwicklung bevorzugt.

Synchronisation auf Objektebene

Synchronisation auf Objektebene mit dem Schlüsselwort synchronized stellt sicher, dass nur ein Thread gleichzeitig auf die Methoden eines bestimmten Objekts zugreifen kann.

Beispiel mit Synchronisation von Objektstufe

Dieses Beispiel zeigt die Synchronisierung von HashMap mit Collections.synchronizedMap().

<code>[ARB, RDD, KOL, DHKA]</code>
Nach dem Login kopieren
Nach dem Login kopieren

Schlussfolgerung

zwischen Hashtable und SynchronizedMap wählt von Ihren spezifischen Bedürfnissen. Für die Sicherheit von Thread in modernen Java -Anwendungen sollten Sie ConcurrentHashMap für eine bessere Leistung im Vergleich zu SynchronizedMap oder Hashtable verwenden. Hashtable ist im Allgemeinen für neuen Code entmutigt.

Das obige ist der detaillierte Inhalt vonUnterschied zwischen Hashtable und synchronisierter Karte in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Aktuelle Ausgaben
Kann Java als Backend des Webs verwendet werden?
Aus 1970-01-01 08:00:00
0
0
0
Installieren Sie JAVA
Aus 1970-01-01 08:00:00
0
0
0
Java kann nicht installiert werden
Aus 1970-01-01 08:00:00
0
0
0
Ist das in der Java-Sprache?
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage