2008-11-06 166 views
45

Hash Map与字典ADT有什么区别?何时更喜欢一个而不是另一个。对于我的编程任务,我的教练要求使用其中的一个,但我没有看到两者之间的差异。该计划应该与一个巨大的没有。的字符串。有什么建议么?HashMap与字典之间的区别ADT

回答

46

就Java而言,类别HashMap和类别Dictionary是“地图”抽象数据类型的实现。抽象数据类型不是特定于任何一种编程语言,并且Map ADT也可以称为哈希,或字典或关联数组(其他人在http://en.wikipedia.org/wiki/Associative_array)。 (请注意,我们正在做的Dictionary类和字典ADT之间的区别。)

Dictionary已被标记为过时,所以最好不要使用它。

+6

注意这里是“地图”抽象数据类型和`Map` Java接口之间的差异。正如在其他的答案中提到,传统`Dictionary`类_不_落实`Map` Java接口,但`HashMap`类一样。 – 2012-11-26 22:11:43

7

在Java中,HashMap实现了Map接口,而Dictionary没有。这使字典过时(根据API文档)。也就是说,他们都做了类似的功能,所以你是对的,他们看起来很相似...... HashMap是一种字典。

虽然建议您使用HashMap。

13

这个堆栈溢出后做了很好的工作,解释的主要区别:

Java hashmap vs hashtable

需要注意的是Hashtable的仅仅是解释ADT的实现。另请注意,Java考虑词典"obsolete"

对于大多数用途来说,Hashtable是同步的这一事实并不会给您带来太多的收益。使用HashMap。

+0

谢谢!这很有帮助! – trillions 2012-08-11 07:25:47

0

地图是在Java,相同的通用语言无关的数据结构的ADT用于维持<键,值>双的接口,并且在Java 1.2的引入。

词典(不是Map的实现)是JDK 1.0中引入的同一目的的抽象类。它唯一的子类是Hashtable,它本身正在实现Map。尽管如此,Dictionary类已经过时了,你可能会忘记它。

有地图和字典的功能,成员之间的分歧,但是你会发现HashMap和Hashtable的更加有用的区别。 here你可以找到差异。

相关问题