我知道map是一种将键映射到值的数据结构。字典不也是这样吗?地图和字典的区别是什么?
1. 我不是问它们在语言X或Y中是如何定义的(这似乎是人们在这里问的),我想知道它们在理论上有什么不同。
我知道map是一种将键映射到值的数据结构。字典不也是这样吗?地图和字典的区别是什么?
1. 我不是问它们在语言X或Y中是如何定义的(这似乎是人们在这里问的),我想知道它们在理论上有什么不同。
当前回答
这是同一个概念的两个不同术语。 Hashtable和HashMap也引用相同的概念。
其他回答
是的,它们是一样的,你可以添加“关联数组”到混合。
使用哈希表或哈希表是指实现。
通常我假设映射是由哈希表支持的;它意味着一个无序的存储。 字典意味着有序的存储。
有一个基于树的字典叫做Trie。
在Lisp中,它可能是这样的:
(a (n (d t)) n d )
这句话概括为:
一个 而且 蚂蚁 一个 广告
从顶部到叶的遍历产生一个单词。
所以在纯理论层面上。
字典是一个可以用来定位链接值的值。 Map是一个值,它提供了如何定位另一个值的指令
所有允许非线性访问的集合(即只有get first或get last)都是Map,因为即使是简单的Array也有一个映射到正确值的索引。因此,虽然字典是地图的一种类型,但地图具有更广泛的功能。
In Practice a its usually the mapping function that defines the name, so a HashMap is a mapped data structure that uses a hashing algorithm to link the key to the value, where as a Dictionary doesn't specify how the keys are linked to a value so could be stored via a linked list, tree or any other algorithm. from the usage end you usually don't care what the algorithm only that they work so you use a generic dictionary and only shift to one of the other structures only when you need to enfore the type of algorithm
这是同一个概念的两个不同术语。 Hashtable和HashMap也引用相同的概念。
主要的区别是Map要求所有的条目(值和键对)都有一个唯一的键。如果发生冲突,即当一个新条目与集合中已经存在的条目具有相同的键时,则需要冲突处理。
通常,我们使用分离链接来处理冲突。或者线性探测。
Dictionary允许将多个条目链接到同一个键。
当Map实现了独立链接时,它就趋向于字典。