【问题标题】:Array-Based lists and regular arrays基于数组的列表和常规数组
【发布时间】:2023-03-11 02:54:02
【问题描述】:

基于数组的列表和常规数组是否相同?而作为字典数据结构使用时,哈希表和基于数组的列表有什么不同,它们之间有什么权衡吗?

【问题讨论】:

标签: data-structures arraylist hashtable


【解决方案1】:

数据结构简介.. 具有 Java 背景。

基于数组、列表和数组列表的数据结构允许您按元素插入的顺序访问元素。

元素:3,4,2,1,5

列表:[3]<->[4]<->[2]<->[1]<->[5]

基于哈希映射/表的数据结构允许您通过与之关联的唯一键访问元素。

元素:3,4,2,1,5

键:c,d,b,a,e

地图:

[c]->[3]

[d]->[4]

[b]->[2]

[a]->[1]

[e]->[5]

数组(或向量)。它提供了极快的速度O(1) 以非常低的空间开销访问数组中的任何元素,您还可以从当前元素向后和向前迭代。但主要问题是数组是固定大小的,你必须知道创建数据结构时需要多少元素。

列表(双链表)。它提供了一个动态大小的数据结构(您不必知道创建时的元素数量),可以快速访问前一个元素和新元素。但是访问 any 元素非常慢O(n) 并且它的空间开销比数组略高。

数组列表(基于数组的列表)。像数组一样,它提供了对任何元素的极快O(1) 访问速度,并且空间开销非常低。与列表一样,您在创建它时不需要知道数据结构中有多少元素。但在幕后(用户没有意识到)它本质上是一个数组,它检测数组何时“满”,然后创建一个新数组(大约是原始大小的两倍)并将元素从旧数组复制到新数组。

哈希表与上面的三种数据结构有很大的不同。它不允许按插入顺序访问元素。相反,它允许您将键映射到值;因此您可以使用唯一键快速访问 O(1) 元素。

【讨论】:

    猜你喜欢
    • 2011-11-20
    • 1970-01-01
    • 2020-12-22
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多