ArrayList和LinkedList区别及使用场景

ArrayList和LinkedList区别及使用场景ArrayList 和 LinkedList 区别及使用场景 1 LinkedList 和 ArrayList 的差别主要来自于 Array 和 LinkedList 数据结构的不同 ArrayList 是基于数组实现的 LinkedList 是基于双链表实现的 另外 LinkedList 类不仅是 List 接口的实现类 可以根据索引来随机访问集合中的元素 除此之外 LinkedList 还实现了 Deque 接口 Deque 接

ArrayList和LinkedList区别及使用场景

1. LinkedList和ArrayList的差别主要来自于Array和LinkedList数据结构的不同。ArrayList是基于数组实现的,LinkedList是基于双链表实现的。另外LinkedList类不仅是List接口的实现类,可以根据索引来随机访问集合中的元素,除此之外,LinkedList还实现了Deque接口,Deque接口是Queue接口的子接口,它代表一个双向队列,因此LinkedList可以作为双向队列 ,栈(可以参见Deque提供的接口方法)和List集合使用,功能强大。

2. 因为Array是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的,可以直接返回数组中index位置的元素,因此在随机访问集合元素上有较好的性能。Array获取数据的时间复杂度是O(1),但是要插入、删除数据却是开销很大的,因为这需要移动数组中插入位置之后的的所有元素

3. 相对于ArrayList,LinkedList的随机访问集合元素时性能较差,因为需要在双向列表中找到要index的位置,再返回;但在插入,删除操作是更快的。因为LinkedList不像ArrayList一样,不需要改变数组的大小,也不需要在数组装满的时候要将所有的数据重新装入一个新的数组,这是ArrayList最坏的一种情况,时间复杂度是O(n),而LinkedList中插入或删除的时间复杂度仅为O(1)。ArrayList在插入数据时还需要更新索引(除了插入数组的尾部)。

4. LinkedList需要更多的内存,因为ArrayList的每个索引的位置是实际的数据,而LinkedList中的每个节点中存储的是实际的数据和前后节点的位置。

使用场景:

(1)如果应用程序对数据有较多的随机访问,ArrayList对象要优于LinkedList对象;

  ( 2 ) 如果应用程序有更多的插入或者删除操作,较少的随机访问,LinkedList对象要优于ArrayList对象;

(3)不过ArrayList的插入,删除操作也不一定比LinkedList慢,如果在List靠近末尾的地方插入,那么ArrayList只需要移动较少的数据,而LinkedList则需要一直查找到列表尾部,反而耗费较多时间,这时ArrayList就比LinkedList要快。

 

 

 

参考 https://blog.csdn.net/followMyInclinations/article/details/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198754.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午2:33
下一篇 2026年3月26日 下午2:33


相关推荐

  • javascript下载文件

    javascript下载文件function DownURL(strRemoteURL,strLocalURL){ try {  var xmlHTTP=new ActiveXObject(“Microsoft.XMLHTTP”);  xmlHTTP.open(“Get”,strRemoteURL,false);  xmlHTTP.send();  var adodbStream=new ActiveXObject(“ADO

    2022年5月5日
    43
  • u检验、t检验、F检验、卡方检验详细分析

    u检验、t检验、F检验、卡方检验详细分析要点 一 正态分布是统计学的基础 它对于各种假设检验极其的重要 t 分布 F 分布 卡方分布都是基于正态分布衍生出来的 而且中心极限定理也证明了 多数分布在样本量 n 足够大的情况下 其样本均值服从正态分布 二 假设检验的步骤 1 提出假设 包括无效假设 H0 和备择假设 H1 2 预设检验水准 一般设为 0 05 概率小于 0 05 为小概率事件 3 选定检

    2026年3月19日
    2
  • Xquartz远程访问linux

    Xquartz远程访问linux实验环境 mac 操作系统 OSX10 9 4Mavericksma 168 1 106XQuartz 2 6 7 虚拟机版本 VirtualBox4 3 12 虚拟机 IP 192 168 1 112 虚拟机操作系统版本 Ora

    2026年3月17日
    2
  • html中颜色的编码,css颜色编码对照表[通俗易懂]

    html中颜色的编码,css颜色编码对照表[通俗易懂]css颜色编码对照表2018-09-14颜色名十六进制值RGB值PearlyGates#FFFFF2#fffff2PaleOlive#FBF5E6#fbf5e6white#FFFFFF#ffffffFrostedLime#F6F9ED#f6f9edWhiteOrchid#FDFDF0#fdfdf0GreenVeil#EEF3E2#eef3e2GrayClif…

    2022年5月17日
    62
  • C++ Vector Resize函数[通俗易懂]

    C++VectorResize函数ChangesizeResizesthecontainersothatitcontainsnelements.Ifnissmallerthanthecurrentcontainersize,thecontentisreducedtoitsfirstnelements,removingthosebeyond(anddestroyingthem).Ifnisgreaterthanthecu

    2022年4月8日
    86
  • 补码的加减运算器

    补码的加减运算器加法器的原理注意 Cin 要加到 a 和 b 的最低位 Cout 是 A 和 B 相加之后 向更高位产生的一个进位信息补码的加减运算由于此时实现的是减法 所以 sub 的这根线也会控制 Cin 使 Cin 的值为 1X 8Y 7 无符号数的减法运算标志位的生成 OF 这个标志位只在有符号数的加减运算中才有意义 OF 的例子 SF 的确定 SF 最高位的本位和对无符号数没有意义 因为无符号数没有正负之说 ZF 对有符号 and 无符号都有意义 CF 只对无符号数的加减法有意义 CF Cout 异或

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号