Heim > Java > javaLernprogramm > Detaillierte Erläuterung des Unterschieds zwischen Java HashMap und HashTable

Detaillierte Erläuterung des Unterschieds zwischen Java HashMap und HashTable

高洛峰
Freigeben: 2017-01-11 14:40:29
Original
1230 Leute haben es durchsucht

Der Unterschied zwischen HashMap und HashTable wird oft von anderen gefragt. Ich werde ihn heute hier zusammenfassen.

(1) Die Vererbungsgeschichte ist unterschiedlich

public class Hashtable extends Dictionary implements Map
public class HashMap extends AbstractMap implements Map
Nach dem Login kopieren


Hashtable wird von der Dictionary-Klasse geerbt, HashMap dagegen Java Eine Implementierung der in 1.2 eingeführten Map-Schnittstelle.

(2) Unterschiedliche Sicherheit

HashMap ist nicht synchronisiert, während HashTable standardmäßig synchronisiert ist, was bedeutet, dass HashTable threadsicher ist und mehrere Threads eine HashTable ohne ordnungsgemäße Synchronisierung teilen können. Mehrere Threads können eine HashMap nicht gemeinsam nutzen. Java 5 und höher bietet ConcurrentHashMap, einen Ersatz für HashTable und eine bessere Skalierbarkeit als HashTable. Natürlich können wir HashMap mit den folgenden Methoden synchronisieren:

Map m = Collections.synchronizeMap(hashMap);
Nach dem Login kopieren

(3) Ähnlichkeiten und Unterschiede, ob Nullwerte verwendet werden können

HashMap ermöglicht es Ihnen um Nullwerte als Schlüssel oder Wert eines Tabelleneintrags zu verwenden. Nur ein Datensatz in einer HashMap kann ein leerer Schlüssel sein, aber eine beliebige Anzahl von Einträgen kann ein leerer Wert sein. Das heißt, wenn der Suchschlüssel nicht in der Tabelle gefunden wird oder wenn der Suchschlüssel gefunden wird, es sich aber um einen leeren Wert handelt, gibt get() null zurück, aber in HashTable sind keine Nullwerte zulässig Schlüssel und Wert.

(4) Die interne Implementierung der Traversalmethoden zwischen den beiden ist unterschiedlich

Sowohl Hashtable als auch HashMap verwenden den Iterator-Iterator und den Enumerator von HashTable Iterator ist nicht ausfallsicher. Aus historischen Gründen verwendet Hashtable auch Enumeration.

(5) Die Verwendung von Hash-Werten ist unterschiedlich

HashTable verwendet direkt den HashCode des Objekts, während HashMap den Hash-Wert neu berechnen muss.

(6) Die anfängliche Größe des Arrays und die Erweiterungsmethode der internen Implementierung der beiden sind unterschiedlich.

Die Standardgröße des Hash-Arrays in HashTable beträgt 11 und die zunehmende Methode is old*2+1; HashMap Die Standardgröße des Hash-Arrays beträgt 16 und muss ein Exponent von 2 sein.

Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, vielen Dank für Ihre Unterstützung dieser Website!

Ausführlichere Erläuterungen zu den Unterschieden zwischen Java HashMap und HashTable finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage