HashMap和字典ADT的区别

67

哈希表和字典ADT有什么区别?何时应该优先选择其中的一个?在我的编程作业中,我的教练要求我使用它们中的一个,但我并没有看到两者之间的任何区别。该程序应该使用大量的字符串。有什么建议吗?

4个回答

63

就Java而言,HashMapDictionary类都是"Map"抽象数据类型的实现。 抽象数据类型不特定于任何一种编程语言,而Map ADT也可以被称为Hash、Dictionary或Associative Array(其他在http://en.wikipedia.org/wiki/Associative_array)。 (请注意,我们在区分Dictionary类和Dictionary ADT。)

Dictionary类已被标记为过时,因此最好不要使用它。


8
请注意,“Map”抽象数据类型和Java中的“Map”接口是有区别的。如其他答案所述,遗留的“Dictionary”类并没有实现Java中的“Map”接口,但“HashMap”类实现了该接口。 - Justin Houk

20

这篇 Stack Overflow 帖子很好地解释了关键差异:

Java hashmap vs hashtable

请注意,Hashtable 只是字典 ADT 的一种实现。另外,请注意 Java 认为 Dictionary 已过时

对于大多数用途,Hashtable 同步的事实并没有给你带来很多好处。请使用 HashMap。


9
在Java中,HashMap实现了Map接口,而Dictionary没有。根据API文档,这使得Dictionary已经过时了。也就是说,它们都执行类似的功能,所以你是正确的,它们看起来非常相似... HashMap是一种字典类型。
建议使用HashMap。

1

Map是Java中的一个ADT接口,用于维护<key, value>对的通用数据结构,自Java 1.2引入。

Dictionary(不是Map的实现)是一个抽象类,早在JDK 1.0中就被引入了。它唯一的子类是Hashtable,它本身实现了Map。然而,Dictionary类现在已经过时,可以忘记它了。

尽管Map和Dictionary的函数成员有所区别,但您可能会发现HashMap和Hashtable之间的差异更有用。在这里您可以找到这些差异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接