Heim Java javaLernprogramm Der Unterschied zwischen HashMap und Hashtable in JAVA

Der Unterschied zwischen HashMap und Hashtable in JAVA

Jun 22, 2017 pm 01:36 PM
hashmap hashtable 区别

Der Vergleich von HashMap und Hashtable ist eine häufige Frage in Java-Interviews. Sie wird verwendet, um zu testen, ob Programmierer Sammlungsklassen korrekt verwenden können und ob sie je nach Situation verschiedene Ideen zur Lösung von Problemen verwenden können. Das Funktionsprinzip von HashMap, der Vergleich zwischen ArrayList und Vector und diese Frage sind die klassischsten Fragen zum Java-Sammlungsframework. Hashtable ist eine veraltete Sammlungsklasse, die schon seit langem in der Java-API existiert. Es wurde in Java 4 neu geschrieben und die Map-Schnittstelle implementiert, sodass es seitdem Teil des Java-Collection-Frameworks ist. Hashtable und HashMap können in Java-Interviews recht einfach gestellt werden und sind sogar zu den am häufigsten gestellten Fragen in Interviewfragen zum Collection Framework geworden. Vergessen Sie also nicht, sich auf diese Frage vorzubereiten, bevor Sie an einem Java-Interview teilnehmen.

In diesem Artikel werden wir nicht nur den Unterschied zwischen HashMap und Hashtable sehen, sondern auch die Ähnlichkeiten zwischen ihnen.

Der Unterschied zwischen HashMap und Hashtable

HashMap und Hashtable implementieren beide die Map-Schnittstelle, aber bevor Sie sich entscheiden, welche Sie verwenden möchten, müssen Sie zunächst den Unterschied zwischen ihnen verstehen. Die Hauptunterschiede sind: Thread-Sicherheit, Synchronisation und Geschwindigkeit.

HashMap entspricht fast Hashtable, außer dass HashMap nicht synchronisiert ist und Nullen akzeptieren kann (HashMap kann Nullschlüssel und -werte akzeptieren, Hashtable jedoch nicht).

HashMap ist nicht synchronisiert, während Hashtable synchronisiert ist, was bedeutet, dass Hashtable threadsicher ist und mehrere Threads eine Hashtable ohne korrekte Synchronisierung teilen können, mehrere Threads können HashMap nicht gemeinsam nutzen. Java 5 bietet ConcurrentHashMap, einen Ersatz für HashTable und eine bessere Skalierbarkeit als HashTable.

Ein weiterer Unterschied besteht darin, dass der Iterator von HashMap (Iterator) ein ausfallsicherer Iterator ist, während der Enumerator-Iterator von Hashtable nicht ausfallsicher ist. Wenn also andere Threads die Struktur der HashMap ändern (Elemente hinzufügen oder entfernen), wird eine ConcurrentModificationException ausgelöst, aber die Methode „remove()“ des Iterators selbst löst beim Entfernen von Elementen keine ConcurrentModificationException aus. Dies ist jedoch kein garantiertes Verhalten, sondern hängt von der JVM ab. Dies ist auch der Unterschied zwischen Enumeration und Iterator.

Da Hashtable threadsicher und synchronisiert ist, ist es in einer Single-Threaded-Umgebung langsamer als HashMap. Wenn Sie keine Synchronisierung benötigen und nur einen einzelnen Thread benötigen, ist die Verwendung von HashMap besser als die von Hashtable.

HashMap kann nicht garantieren, dass die Reihenfolge der Elemente in der Karte im Laufe der Zeit unverändert bleibt.

Einige wichtige Begriffe, die Sie beachten sollten:

1) synchronisiert bedeutet, dass jeweils nur ein Thread die Hashtabelle ändern kann. Das heißt, jeder Thread, der die Hashtable aktualisieren möchte, muss zuerst die Synchronisationssperre erhalten, und andere Threads müssen warten, bis die Synchronisationssperre aufgehoben wird, bevor sie die Synchronisationssperre erneut erhalten und die Hashtable aktualisieren können.

2) Ausfallsicherheit hängt mit dem Iterator zusammen. Wenn ein Sammlungsobjekt einen Iterator oder ListIterator erstellt und andere Threads dann versuchen, das Sammlungsobjekt „strukturell“ zu ändern, wird eine ConcurrentModificationException ausgelöst. Es ist jedoch zulässig, dass andere Threads das Sammlungsobjekt über die set()-Methode ändern können, da dies die Sammlung nicht „strukturell“ ändert. Wenn jedoch die Struktur geändert wurde und die Methode set() erneut aufgerufen wird, wird eine IllegalArgumentException geworfen.

3) Strukturelle Änderungen beziehen sich auf das Löschen oder Einfügen eines Elements, das sich auf die Struktur der Karte auswirkt.

Können wir HashMap synchronisieren?

HashMap kann durch die folgende Anweisung synchronisiert werden:
Map m = Collections.synchronizeMap(hashMap);

Fazit

Es gibt mehrere wesentliche Unterschiede zwischen Hashtable und HashMap : Thread-Sicherheit und Geschwindigkeit. Verwenden Sie Hashtable nur, wenn Sie vollständige Thread-Sicherheit benötigen. Wenn Sie Java 5 oder höher verwenden, verwenden Sie ConcurrentHashMap.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen HashMap und Hashtable in JAVA. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Unterschied zwischen char und wchar_t in der C -Sprache Der Unterschied zwischen char und wchar_t in der C -Sprache Apr 03, 2025 pm 03:09 PM

In der C -Sprache ist der Hauptunterschied zwischen char und wchar_t die Zeichencodierung: char verwendet ASCII oder erweitert ASCII, wchar_t Unicode; char nimmt 1-2 Bytes auf, wchar_t nimmt 2-4 Bytes auf; char ist für englischen Text geeignet. Wchar_t ist für mehrsprachige Text geeignet. char ist weithin unterstützt, wchar_t hängt davon ab, ob der Compiler und das Betriebssystem Unicode unterstützen. char ist in der Charakterbereich begrenzt, WCHAR_T hat einen größeren Charakterbereich und spezielle Funktionen werden für arithmetische Operationen verwendet.

Der Unterschied zwischen Multithreading und asynchronem C# Der Unterschied zwischen Multithreading und asynchronem C# Apr 03, 2025 pm 02:57 PM

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.

Was ist die Funktion der C -Sprachsumme? Was ist die Funktion der C -Sprachsumme? Apr 03, 2025 pm 02:21 PM

Es gibt keine integrierte Summenfunktion in der C-Sprache, daher muss sie selbst geschrieben werden. Die Summe kann erreicht werden, indem das Array durchquert und Elemente akkumulieren: Schleifenversion: Die Summe wird für die Schleifen- und Arraylänge berechnet. Zeigerversion: Verwenden Sie Zeiger, um auf Array-Elemente zu verweisen, und eine effiziente Summierung wird durch Selbststillstandszeiger erzielt. Dynamisch Array -Array -Version zuweisen: Zuordnen Sie Arrays dynamisch und verwalten Sie selbst den Speicher selbst, um sicherzustellen, dass der zugewiesene Speicher befreit wird, um Speicherlecks zu verhindern.

Was sind die grundlegenden Anforderungen für C -Sprachfunktionen? Was sind die grundlegenden Anforderungen für C -Sprachfunktionen? Apr 03, 2025 pm 10:06 PM

C -Sprachfunktionen sind die Grundlage für die Code -Modularisierung und das Programmaufbau. Sie bestehen aus Deklarationen (Funktionsüberschriften) und Definitionen (Funktionskörper). C Sprache verwendet standardmäßig Werte, um Parameter zu übergeben, aber externe Variablen können auch mit dem Adresspass geändert werden. Funktionen können oder haben keinen Rückgabewert, und der Rückgabewerttyp muss mit der Deklaration übereinstimmen. Die Benennung von Funktionen sollte klar und leicht zu verstehen sein und mit Kamel oder Unterstrich die Nomenklatur. Befolgen Sie das Prinzip der einzelnen Verantwortung und behalten Sie die Funktion ein, um die Wartbarkeit und die Lesbarkeit zu verbessern.

Was ist der Unterschied zwischen Char und Unsigned char Was ist der Unterschied zwischen Char und Unsigned char Apr 03, 2025 pm 03:36 PM

Char und Unsigned char sind zwei Datentypen, die Charakterdaten speichern. Der Hauptunterschied ist der Weg, um mit negativen und positiven Zahlen umzugehen: Wertebereich: char signiert (-128 bis 127) und nicht signiertes char nicht signiert (0 bis 255). Negative Zahlenverarbeitung: char kann negative Zahlen speichern, unsigned char kann nicht. Bitmodus: char Das höchste Bit repräsentiert das Symbol, nicht signiertes char unsigned Bit. Arithmetische Operationen: SHOR und unsigned char sind signierte und nicht signierte Typen, und ihre arithmetischen Operationen sind unterschiedlich. Kompatibilität: SHAR und nicht signiertes Zeichen

Der Unterschied zwischen H5- und Miniprogramm und Apps Der Unterschied zwischen H5- und Miniprogramm und Apps Apr 06, 2025 am 10:42 AM

H5. Der Hauptunterschied zwischen Mini -Programmen und App ist: Technische Architektur: H5 basiert auf Web -Technologie, und Mini -Programme und Apps sind unabhängige Anwendungen. Erfahrung und Funktionen: H5 ist leicht und einfach zu bedienen, mit begrenzten Funktionen; Mini -Programme sind leicht und haben eine gute Interaktivität. Apps sind leistungsstark und haben reibungslose Erfahrung. Kompatibilität: H5 ist plattformübergreifend, Applets und Apps werden von der Plattform eingeschränkt. Entwicklungskosten: H5 verfügt über niedrige Entwicklungskosten, mittlere Mini -Programme und die höchste App. Anwendbare Szenarien: H5 eignet sich für Informationsanzeigen, Applets eignen sich für leichte Anwendungen und Apps eignen sich für komplexe Funktionen.

Was sind die Unterschiede und Verbindungen zwischen C und C#? Was sind die Unterschiede und Verbindungen zwischen C und C#? Apr 03, 2025 pm 10:36 PM

Obwohl C und C# Ähnlichkeiten haben, sind sie völlig unterschiedlich: C ist eine prozessorientierte, manuelle Speicherverwaltung und plattformabhängige Sprache, die für die Systemprogrammierung verwendet wird. C# ist eine objektorientierte, Müllsammlung und plattformunabhängige Sprache, die für Desktop-, Webanwendungs- und Spielentwicklung verwendet wird.

So setzen Sie den Kennwortschutz für Exportieren von PDF auf PS So setzen Sie den Kennwortschutz für Exportieren von PDF auf PS Apr 06, 2025 pm 04:45 PM

PDF mit Passwort geschützt in Photoshop exportieren: Öffnen Sie die Bilddatei. Klicken Sie auf "Datei" & gt; "Export" & gt; "Exportieren Sie als PDF". Stellen Sie die Option "Sicherheit" fest und geben Sie dasselbe Passwort zweimal ein. Klicken Sie auf "Exportieren", um eine PDF -Datei zu generieren.

See all articles