代码之家  ›  专栏  ›  技术社区  ›  itsaboutcode

数组/列表与字典(为什么我们首先拥有它们)

  •  2
  • itsaboutcode  · 技术社区  · 14 年前

    对我来说,它们都是一样的,这就是为什么我想知道,当我们可以对数组/列表做任何事情时,为什么我们有字典数据结构?字典里有什么好奇心?

    4 回复  |  直到 8 年前
        1
  •  6
  •   Andrew Hare    14 年前

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

    我相信你在比较苹果和桔子——它们有两个完全不同的用途,都是有用的数据结构。

    大多数时候,类似字典的类型被构建为 hash table -这种类型是 非常 因为它平均提供非常快速的查找(取决于哈希算法的质量)。

        2
  •  6
  •   Gordon Gustafson    14 年前

    arraylist只存储一组对象(可以随机访问)。字典存储成对的对象。这使得数组/列表在集合中有一组对象(素数、颜色、学生等)时更合适。字典更适合显示一对对象之间的关系。

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

        3
  •  0
  •   Tilo Mitra    14 年前

    为了建立在安德鲁所说的基础上,在一些语言中,比如PHP和JavaScript,数组还可以作为字典(即关联数组)使用。这也归结为松散的V语言严格的打字。

        4
  •  0
  •   Christophe Roussy    8 年前

    理论上你可以用字典做任何事情。 但不要忘了,在某个时刻,程序运行在一台真正的机器上,这是由于硬件的限制:处理器、内存、存储的性质(磁盘/SSD)。

    在幕后,字典经常使用 Hash table

    在某些语言中,您可以在许多不同类型的列表/数组和哈希表之间进行选择,因为这些结构有许多不同的实现,每个实现都有优点和缺点。

    使用一个 数组 当您处理一系列元素或需要在给定索引(0,1,2,…)处随机访问元素时。

    使用A 词典 当您具有键/值格式并且需要通过键快速检索时

    如果你想更多地了解这些,我建议你了解更多 data structures 因为它们是基本的

    注意:根据语言的不同,这些结构的名称可能会有所不同,并且是混淆的来源。