ArrayList 和LinkedList 都继承了List 接口,具有相同的行为,但是它们对某些操作的性能缺有着天壤之别。ArrayList是以顺序表的方式来存存储数据的,而LinkedList是链表的实现。下面来看一下俩种数据结构的区别:
顺序表
分配方式:静态分配。程序执行之前必须明确规定存储规模。若线性表长度n变化较大,则存储规模难于预先确定估计过大将造成空间浪费,估计太小又将使空间溢出机会增多。
存储密度:为1。当线性表的长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表作为存储结构。
存取方法:随机存取结构,对表中任一结点都可在O(1)时间内直接取得线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜。
插入删除操作:在顺序表中进行插入和删除,平均要移动表中近一半的结点,尤其是当每个结点的信息量较大时,移动结点的时间开销就相当可观。
链表
分配方式:动态分配只要内存空间尚有空闲,就不会产生溢出。因此,当线性表的长度变化较大,难以估计其存储规模时,以采用动态链表作为存储结构为好。
存储密度:<1
存取方法:顺序存取结构,链表中的结点,需从头指针起顺着链扫描才能取得。
插入删除操作:在链表中的任何位置上进行插入和删除,都只需要修改指针。对于频繁进行插入和删除的线性表,宜采用链表做存储结构。若表的插入和删除主要发生在表的首尾两端,则采用尾指针表示的单循环链表为宜
由上面的比较可以得出结论:
进行查找,很少做插入和删除操作时或只用来存储数据时,采用ArrayList为宜,
对于频繁进行插入和删除的线性表,宜采用LinkedList。
分享到:
相关推荐
1,ArrayList是数组的数据结构,LinkedList是链表的数据结构。 2,随机访问的时候,ArrayList的效率比较高,因为LinkedList要移动指针,而ArrayList是基于 3,索引(index)的数据结构,可以直接映射到。 4,插入、...
【Java面试题】ArrayList和LinkedList区别
关于arraylist和linkedList的区别
ArrayList Vector LinkedList 区别与用法.
ArrayList、LinkedList、Vector区别简介。
一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要...
1.List是接口类,ArrayList和LinkedList是List的实现类 2.ArrayList是动态数组(顺序表)的数据结构 3.LinkedList
测试ArrayList和LinkedList的add方法
2.在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动 3.LinkedList不支持高效的随机元素访问 4.ArrayList的
合理运用ArrayList与LinkedList
05丨ArrayList还是LinkedList?使用不当性能差千倍.html
list集合案例增、删、改、查,ArrayList与LinkedList的区别,LinkedList堆栈/队列的开发,list集合容量会自动扩容,list去除重复
Java ArrayList Vector LinkedList map区别 各种集合的区别 写得非常详细
10.ArrayList 和LinkedList的区别.avi
比较ArrayList,LinkedList,Vector三者随机读取,插入,删除性能。
对比Vector、ArrayList、LinkedList1
ArrayList-LinkedList-源码.rar
集合(Arraylist,LinkedList)进阶思维导图
Map+List+ArrayList+LinkedList Java源代码,适合初学者
ArrayList与LinkedListArrayList与LinkedList扩容数组最大容量默认的初始容量扩容新容量=旧容量*1.5* Increases