2008-11-06 4 views
45

В чем разница между хэш-картой и словарем ADT. И когда предпочитать один за другим. Для моего назначения программирования мой инструктор попросил использовать один из них, но я не вижу никакой разницы между ними. Предполагается, что программа будет работать с огромным нет. строк. Какие-либо предложения?Разница между HashMap и словарем ADT

ответ

46

С точки зрения Java, как класс HashMap и класс Dictionary являются реализации «Карты» абстрактного типа данных. Абстрактные типы данных не являются специфическими для какого-либо одного языка программирования, а Map ADT также можно назвать хэшем или словарем или ассоциативным массивом (другие - http://en.wikipedia.org/wiki/Associative_array). (Обратите внимание на то, что мы делаем различие между Dictionary класса и словарь ADT.)

Dictionaryкласс был помечен как устаревший, так что лучше не использовать его.

+6

Обратите внимание, что существует разница между абстрактным типом данных «Карта» и интерфейсом Java «Карта». Как упоминалось в других ответах, унаследованный класс `Dictionary` не выполняет _not_ реализацию интерфейса Java` Map`, но класс `HashMap` делает. – 2012-11-26 22:11:43

7

В Java HashMap реализует интерфейс карты, в то время как в словаре нет. Это делает словарь устаревшим (в соответствии с документами API). То есть, они оба выполняют аналогичную функцию, поэтому вы правы, что они кажутся очень похожими ... HashMap - это тип словаря.

Рекомендуется использовать HashMap.

13

Это переполнение стека пост делает хорошую работу, объясняя основные отличия:

Java hashmap vs hashtable

Обратите внимание, что Hashtable это просто реализация словаря ADT. Также обратите внимание, что Java рассматривает словарь "obsolete".

Тот факт, что синхронизация Hashtable не покупает вас для большинства целей. Используйте HashMap.

+0

Спасибо! Это полезно! – trillions 2012-08-11 07:25:47

0

Карта представляет собой интерфейс для ADT в Java, тот же общих языке независимых структур данных для поддержания < ключа, значение > пара, и вводится в Java 1.2.

Словарь (а не реализация карты) является абстрактным классом с той же целью, который был введен ранее в JDK 1.0. Единственным его подклассом является Hashtable, который сам реализует Map. Тем не менее, теперь класс словаря устарел, и вы можете его забыть.

Существуют различия между членами функции Map и Dictionary, однако вы можете найти разницу между HashMap и Hashtable более полезными. here вы можете найти различия.

Смежные вопросы