arraylist和linkedlist重大区别?

时间:2021.11.06 发布人:zqtjr

arraylist和linkedlist重大区别?

已解决问题

谷歌zqtjr用户在2021.11.06提交了关于“艾瑞泽5arraylist和linkedlist重大区别?”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-22T16:39:23。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,千言万语,表达不了我的感激之情,我已铭记在心 !

希望以下的回答,能够帮助你。

第1个回答

用户名:匿名用户  


1.ArrayList是实现了基于动态数组的**结构,而LinkedList是基于链表的**结构;

2.对于随机访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针;

3.对于添加和删除操作add和remove,一般大家都会说LinkedList要比ArrayList快,因为ArrayList要移动**。但是实际情况并非这样,对于添加或删除,LinkedList和ArrayList并不能明确说明谁快谁慢

研究源码可以看出,ArrayList想要get(intindex)元素时,直接返回index位置上的元素,而LinkedList需要通过for循环进行查找,虽然LinkedList已经在查找方法上做了优化,比如index

ArrayList想要在指**置插入或删除元素时,主要耗时的是System.arraycopy动作,会移动index后面所有的元素;LinkedList主耗时的是要先通过for循环找到index,然后直接插入或删除。这就导致了两者并非一定谁快谁慢

测试:

importj**a.util.ArrayList;

importj**a.util.Collections;

importj**a.util.LinkedList;

importj**a.util.List;

/*

*@description测试ArrayList和LinkedList插入的效率

*@eson_15

*/

publicclassArrayOrLinked{

staticListarray=newArrayList();

staticListlinked=newLinkedList();

publicstaticvoidmain(String[]args){

//首先分别给两者插入10000条**

for(inti=0;i