Der Vergleich zwischen HashMap und Hashtable ist eine häufige Frage in Java -Interviews, mit denen die Programmierer korrekte Sammlungsklassen verwenden können und ob sie sich an verschiedene Ideen anpassen können, um Probleme zu lösen. Wie Hashmap funktioniert, Vergleich von ArrayList mit Vector, und diese Frage ist die klassischste Frage zu Java -Sammlungs -Frameworks. Hashtable ist eine veraltete Sammlungsklasse, die seit langem in der Java -API existiert. Es wurde in Java 4 umgeschrieben und die Kartenschnittstelle implementiert, so dass es seitdem Teil des Java -Sammlungs -Frameworks geworden ist. Hashtable und HashMap sind in Java -Interviews leicht zu beantworten und sind sogar die häufigsten Fragen geworden, die in Collection Framework -Interviews getestet werden müssen. Vergessen Sie also nicht, diese Frage vor der Teilnahme an Java -Interviews vorzubereiten.
In diesem Artikel werden wir nicht nur den Unterschied zwischen Hashmap und Hashtable sehen, sondern auch den Ähnlichkeiten zwischen ihnen.
Der Unterschied zwischen Hashmap und Hashtable
Sowohl Hashmap als auch Hashtable implementieren Kartenschnittstellen, aber bevor Sie entscheiden, welche Sie verwenden sollen, müssen Sie zuerst den Unterschied zwischen ihnen herausfinden. Die Hauptunterschiede sind: Gewindesicherheit, Synchronisation und Geschwindigkeit.
Einige wichtige Begriffe zu beachten:
1) Das heißt, jeder Thread muss zuerst die Synchronisationsschloss erhalten, wenn er das Hashtable aktualisieren möchte. Andere Threads müssen warten, bis die Synchronisationsschloss veröffentlicht wird, bevor sie die Synchronisationssperrung erhalten und das Hashtable erneut aktualisieren können.
2) Iterator mit fehlgesichertem und iterator sind verwandt. Wenn ein Sammlungsobjekt einen Iterator oder Listiterator erstellt und andere Threads versuchen, das Sammlungsobjekt "strukturell" zu ändern, wird eine Ausnahme von ConcurrentModificificationException ausgeworfen. Andere Threads können das Sammelobjekt jedoch über die Methode set () ändern, da dies die Sammlung nicht "strukturell" ändert. Wenn die Struktur jedoch geändert wurde und die set () -Methode aufgerufen wird, wird eine illegalArgumentException -Ausnahme ausgelöst.
3) Strukturelle Änderungen beziehen sich auf das Löschen oder Einfügen eines Elements, das die Struktur der Karte beeinflusst.
Können wir Hashmap synchronisieren?
HashMap kann durch die folgende Aussage synchronisiert werden:
Karte M = Collections.Synchronizemap (HashMap);
abschließend
Es gibt mehrere Hauptunterschiede zwischen Hashtable und HashMap: Gewindesicherheit und -geschwindigkeit. Verwenden Sie Hashtable nur, wenn Sie eine vollständige Thread -Sicherheit benötigen. Wenn Sie Java 5 oder höher verwenden, verwenden Sie bitte Concurrenthashmap.
Original -Link: Javareviehed Übersetzung: Importnew.com - Tang Xiaojuan Übersetzung Link: http://www.importnew.com/7010.html