64

哈希映射和字典 ADT 有什么区别。以及何时更喜欢一个。对于我的编程任务,我的导师要求使用其中之一,但我认为两者之间没有任何区别。该程序应该与一个巨大的没有。的字符串。有什么建议么?

4

4 回答 4

63

在 Java 中,类HashMap和类Dictionary都是“映射”抽象数据类型的实现。抽象数据类型并不特定于任何一种编程语言,Map ADT 也可以称为哈希、字典或关联数组(其他位于http://en.wikipedia.org/wiki/Associative_array)。(请注意,我们在Dictionary类和 Dictionary ADT 之间进行了区分。)

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

于 2008-11-17T22:06:13.513 回答
20

这篇 Stack Overflow 帖子很好地解释了主要区别:

Java hashmap vs hashtable

请注意,Hashtable 只是 Dictionary ADT 的一个实现。另请注意,Java 认为 Dictionary "obsolete"

Hashtable 是同步的这一事实对大多数用途来说并没有给你带来太多好处。使用哈希映射。

于 2008-11-06T00:56:47.050 回答
9

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

不过建议您使用 HashMap。

于 2008-11-06T00:54:54.730 回答
1

Map 是 Java 中 ADT 的接口,与维护 <key, value> 对的通用语言无关的数据结构相同,并在 Java 1.2 中引入。

Dictionary(不是 Map 的实现)是一个抽象类,目的与 JDK 1.0 中早先介绍的相同。它拥有的唯一子类是 Hashtable,它本身正在实现 Map。尽管如此,Dictionary 类现在已经过时了,你可能会忘记它。

Map 和 Dictionary 的函数成员之间存在差异,但是您可能会发现 HashMap 和 Hashtable 之间的差异更有用。在这里你可以找到不同之处。

于 2016-11-07T12:14:13.823 回答