2008-11-06 4 views
45

Was ist der Unterschied zwischen einer Hash Map und Wörterbuch ADT. Und wann man eines über das andere bevorzugt. Für meinen Programmierauftrag hat mein Ausbilder gebeten, einen von ihnen zu verwenden, aber ich sehe keinen Unterschied zwischen beiden. Das Programm soll mit einem riesigen Nein funktionieren. von Saiten. Irgendwelche Vorschläge?Der Unterschied zwischen einer HashMap und einem Wörterbuch ADT

Antwort

46

In Bezug auf Java sowohl die Klasse HashMap und die Klasse Dictionary sind Implementierungen des „Map“ abstrakten Datentypen. Abstrakte Datentypen sind nicht für eine bestimmte Programmiersprache spezifisch, und der Map-ADT kann auch als Hash oder ein Dictionary oder ein assoziatives Array (andere unter http://en.wikipedia.org/wiki/Associative_array) bezeichnet werden. (Beachten wir einen Unterschied zwischen der Dictionary Klasse machen und Wörterbuch-ADT.)

Die DictionaryKlasse als veraltet markiert wurde, so ist es am besten nicht zu benutzen.

+6

Beachten Sie, dass zwischen dem abstrakten Datentyp "Map" und der Java-Schnittstelle "Map" ein Unterschied besteht. Wie in anderen Antworten erwähnt, implementiert die Legacy-Klasse "Dictionary" _not_ nicht die Java-Schnittstelle "Map", sondern die Klasse "HashMap". –

7

In Java implementiert die HashMap die Map-Schnittstelle, während das Dictionary nicht funktioniert. Das macht das Dictionary überflüssig (gemäß den API-Dokumenten). Das heißt, sie haben beide eine ähnliche Funktion, so dass Sie Recht haben, dass sie sich sehr ähnlich sehen ... eine HashMap ist eine Art Wörterbuch.

Sie sollten jedoch die HashMap verwenden.

13

Dieser Stack Overflow Post macht einen guten Job die wichtigsten Unterschiede zu erklären:

Java hashmap vs hashtable

Beachten Sie, dass Hashtable ist einfach eine Implementierung des Wörterbuch ADT. Beachten Sie auch, dass Java das Wörterbuch "obsolete" berücksichtigt.

Die Tatsache, dass Hashtable nicht, dass Sie für die meisten Anwendungen viel kostet synchronisiert kaufen. Verwenden Sie HashMap.

+0

Vielen Dank! Es ist hilfreich! – trillions

0

Map ist eine Schnittstelle für einen ADT in Java, die gleiche allgemeine sprachunabhängige Datenstruktur für die Aufrechterhaltung < Schlüssel, Wert > Paare und wird in Java 1.2 eingeführt.

Dictionary (nicht eine Implementierung von Map) ist eine abstrakte Klasse für den gleichen Zweck eingeführt früher in JDK 1.0. Die einzige Unterklasse, die es hat, ist Hashtable, die selbst Map implementiert. Trotzdem ist die Dictionary-Klasse jetzt veraltet und Sie können sie vergessen.

Es gibt Unterschiede zwischen den Funktionselementen von Karte und Wörterbuch, aber Sie den Unterschied zwischen HashMap und Hashtable kann finden nützlicher. here können Sie die Unterschiede finden.