数组/列表与字典(为什么我们在第一时间有它们)

its*_*ode 2 arrays language-features dictionary data-structures

对我来说他们都是一样的,这就是为什么我想知道为什么我们可以用数组/列表做所有事情时都有字典数据结构?词典中有什么特别之处?

And*_*are 6

数组提供顺序数据集的随机访问.字典(或关联数组)提供从一组键到一组值的映射.

我相信你正在比较苹果和橘子 - 它们有两个完全不同的用途,并且都是有用的数据结构.

大多数情况下,类似字典的类型被构建为哈希表 - 这种类型非常有用,因为它平均提供非常快速的查找(取决于哈希算法的质量).


Gor*_*son 6

Arraylists只存储一组对象(可以随机访问).字典存储对象对.这使得数组/列表更适合于一组对象(素数,颜色,学生等).字典更适合显示一对对象之间的关系.

为什么我们需要字典?假设您有一些数据需要从一种形式转换为另一种形式,例如罗马数字字符到它们的值.如果没有字典,你必须将这个关联与两个数组一起破解,你首先找到密钥在第一个列表中的位置,然后在第二个列表中访问该位置.这非常容易出错并且效率低下,并且字典提供了更直接的方法.