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
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);
(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!