Der Unterschied zwischen Hashmap und Hashtable wird oft von anderen gefragt. Ich werde es heute hier zusammenfassen.
(I) Die Geschichte der Erbschaft ist anders
öffentliche Klasse Hashtable erweitert Dictionary Implements Mappublic Class Hashmap erweitert abstraktmap implementiert map
Hashtable wird aus der Wörterbuchklasse erbelt, und HashMap ist eine Implementierung der von Java 1.2 eingeführten Kartenschnittstelle.
(Ii) unterschiedliche Sicherheit
HashMap ist nicht synchronisiert und Hashtable ist standardmäßig synchronisiert, was bedeutet, dass Hashtable Thread-sicher ist und mehrere Threads einen Hashtable teilen können. Und wenn es keine korrekte Synchronisation gibt, können mehrere Threads HashMap nicht freigeben. Java 5 liefert später Concurrenthashmap, was ein Ersatz für Hashtable ist und eine bessere Skalierbarkeit als Hashtable hat. Natürlich können wir Hashmap synchronisieren von:
Karte M = Collections.Synchronizemap (HashMap);
(Iii) ist in Nullwerten der gleichen oder ähnlich möglich
Mit HashMap können Sie Nullwerte als Schlüssel oder Wert für einen Tabelleneintrag verwenden. Es gibt nur einen Datensatz in einem HashMap, der ein leerer Schlüssel sein kann, aber eine beliebige Anzahl von Einträgen kann ein leerer Wert sein. Das heißt, wenn in der Tabelle kein Suchschlüssel gefunden wird oder wenn der Suchschlüssel gefunden wird, es jedoch ein leerer Wert ist, wird get () null zurückgegeben. Während Hashtable nicht funktioniert, ermöglicht weder der Schlüssel noch Wert Nullwerte.
(Iv) Die internen Implementierungen der beiden Traversalmethoden sind unterschiedlich
Hashtable und HashMap verwenden beide den Iterator -Iterator. Der Iterator von HashMap ist ein fehlgeschnittener Iterator, während der Enumerator-Iterator des Hashtable kein fehlgeschlagenes Fast ist. Aus historischen Gründen verwendet Hashtable auch die Aufzählungsmethode.
(V) unterschiedliche Verwendungen von Hash -Werten
Hashtabelle verwendet direkt den HashCode des Objekts, während HashMap den Hash -Wert neu berechnen muss.
(Vi) Die anfängliche Größe und Erweiterungsmethode des Arrays der internen Implementierungsmethoden unterscheiden sich.
Die Standardgröße des Hash -Arrays in Hashtable beträgt 11 und die Methode zum Erhöhen ist alt*2+1; Die Standardgröße des Hash -Arrays in HashMap beträgt 16 und muss ein Exponent von 2 sein.
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!