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实例化对象只需要修改指针即可。
参考技术Aarraylist和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的区别的主要内容,如果未能解决你的问题,请参考以下文章