arraylist和linkedlist的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arraylist和linkedlist的区别相关的知识,希望对你有一定的参考价值。

arraylist和linkedlist的区别:

一、查找元素方法不同:

1、arraylist可以直接通过数组下标找到元素。

2、linkedlist要通过移动指针遍历每个元素,直到找到需要的元素为止。arraylist查找元素的速度比linkedlist快。

二、空间消耗。

1、arraylist的空间浪费主要体现在在list结尾预留了一定的容量空间。

2、而linkedlist的空间浪费则体现在它的每一个元素都要消耗一定的空间。

三、原理不同。

1、arraylist是基于动态数组实现的非线程安全集合。

2、linkedlist是基于链表实现的非线程安全集合。

四、删除元素。

1、arraylist在新增和删除元素时,可能扩容和复制数组。

2、而linkedlist实例化对象只需要修改指针即可。

参考技术A

arraylist和linkedlist的区别如下:

1、ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

2、对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。

3、对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

什么场景下更适宜使用 LinkedList而不用ArrayList

你的应用不会随机访问数据。因为如果你需要LinkedList中的第n个元素的时候,你需要从第一个元素顺序数到第n个数据,然后读取数据。

你的应用更多的插入和删除元素,更少的读取数据。因为插入和删除元素不涉及重排数据,所以它要比ArrayList要快。

换句话说,ArrayList的实现用的是数组,LinkedList是基于链表,ArrayList适合查找,LinkedList适合增删。

java中ArrayList和LinkedList区别

ArrayList和LinkedList最主要的区别是基于不同数据结构

ArrayList是基于动态数组的数据结构,LinkedList基于链表的数据结构,针对这点,从时间复杂度和空间复杂度来看主要区别:

1.时间复杂度

对于随机访问,ArrayList通过索引快速定位元素位置;而LinkedList需要对列表中元素挨个查找。所以ArrayList快于LinkedList

对于删除插入操作,ArrayList需要对数组重新排序,而且在数组装满的时候要将所有的数据重新装入一个新的数组;LinkedList只需添加一项Entry对象。所以LinkedList快于ArrayList

2.空间复杂度

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

 

引用:

http://pengcqu.iteye.com/blog/502676

http://www.importnew.com/6629.html

以上是关于arraylist和linkedlist的区别的主要内容,如果未能解决你的问题,请参考以下文章

ArrayList和LinkedList区别,举例说明下

arraylist和linkedlist的区别

ArrayList和LinkedList的区别

ArrayList和LinkedList的区别

ArrayList和LinkedList的区别

ArrayList和LinkedList区别