В чем разница между хэш-картой и словарем ADT. И когда предпочитать один за другим. Для моего назначения программирования мой инструктор попросил использовать один из них, но я не вижу никакой разницы между ними. Предполагается, что программа будет работать с огромным нет. строк. Любые предложения?
Разница между HashMap и словарем ADT
Ответ 1
В терминах Java оба класса HashMap
и класс Dictionary
являются реализациями абстрактного типа данных "Карта". Абстрактные типы данных не относятся ни к одному языку программирования, а ADT карты также могут быть известны как Хэш или Словарь или Ассоциативный массив (другие в http://en.wikipedia.org/wiki/Associative_array). (Обратите внимание, что мы делаем различие между классом Dictionary
и словарем ADT.)
Класс Dictionary
отмечен как устаревший, поэтому лучше не использовать его.
Ответ 2
Это сообщение делает хорошую работу, объясняя основные отличия:
Обратите внимание, что Hashtable - это просто реализация словаря ADT. Также обратите внимание, что Java рассматривает словарь "устаревший" .
Тот факт, что Hashtable синхронизирован, не покупает вас для большинства целей. Используйте HashMap.
Ответ 3
В Java HashMap реализует интерфейс Map, в то время как в словаре нет. Это делает словарь устаревшим (в соответствии с документами API). То есть, они оба выполняют аналогичную функцию, поэтому вы правы, что они кажутся очень похожими... HashMap - это тип словаря.
Вам рекомендуется использовать HashMap, хотя.
Ответ 4
Карта - это интерфейс для ADT в Java, одна и та же общая независимая от языка структура данных для поддержки < key, value > пар, и введен в Java 1.2.
Словарь (а не реализация Map) - это абстрактный класс с той же целью, который был введен ранее в JDK 1.0. Единственным его подклассом является Hashtable, который сам реализует Map. Тем не менее, теперь класс словаря устарел, и вы можете его забыть.
Существуют различия между членами функции Map и Dictionary, однако вы можете найти разницу между HashMap и Hashtable более полезными. здесь вы можете найти различия.