我知道map是一种将键映射到值的数据结构。字典不也是这样吗?地图和字典的区别是什么?


1. 我不是问它们在语言X或Y中是如何定义的(这似乎是人们在这里问的),我想知道它们在理论上有什么不同。


当前回答

主要的区别是Map要求所有的条目(值和键对)都有一个唯一的键。如果发生冲突,即当一个新条目与集合中已经存在的条目具有相同的键时,则需要冲突处理。

通常,我们使用分离链接来处理冲突。或者线性探测。

Dictionary允许将多个条目链接到同一个键。

当Map实现了独立链接时,它就趋向于字典。

其他回答

我的2分钱。

Dictionary是Java中的抽象类,而Map是接口。由于Java不支持多重继承,如果一个类扩展了Dictionary,它就不能扩展任何其他类。

因此,引入了Map接口。

字典类已过时,首选使用Map。

通常我假设映射是由哈希表支持的;它意味着一个无序的存储。 字典意味着有序的存储。

有一个基于树的字典叫做Trie。

在Lisp中,它可能是这样的:

(a (n (d t)) n d )

这句话概括为:

一个 而且 蚂蚁 一个 广告

从顶部到叶的遍历产生一个单词。

我现在在一个数据结构类中,我的理解是dict()数据类型也可以初始化为dictionary ={}或键和值,基本上与列表/数组数据类型用于实现堆栈和队列相同。因此,dict()是类型,映射是一个结果数据结构,您可以选择用字典数据类型实现,就像您可以使用列表类型并选择用它实现堆栈或队列数据结构一样。

这个概念的其他术语相当常见:关联数组和哈希。

一个是另一个的旧说法。通常,“字典”一词是在数学术语“地图”占主导地位之前使用的。此外,字典倾向于有键类型的字符串,但这并不是100%正确的。