Rumah > Java > javaTutorial > teks badan

java中对比ArrayList与LinkedList的图文详情

Y2J
Lepaskan: 2017-05-03 14:47:03
asal
1707 orang telah melayarinya

这篇文章主要通过实例对Java中ArrayList与LinkedList进行了对比,需要的朋友可以参考下

 ArrayList,LinkedList都是Collection接口的通用实现方式,两者采用了不用的存储策略,用来适应不同场合的需要。

实现方式

  ArrayList的内部采用集合的方式存储数据

唯一需要注意的是对于容量超过阈值的处理逻辑,数组的默认容量大小是10,最大容量是Integer.Max_Value,超过最大容量会抛内存溢出异常,

扩容机制看下面

扩容后的容量是原有容量的1.5倍

LinkedList的实现方式

内部采用双向链表Node内部类来存储数据,由于采用了双向链表,LinkedList也可以当做栈和队列来使用,但是效率比较低,Java提供了ArrayDeqeue的高效率实现。

性能比较

在尾部插入效率上面,两者相差不会太大,但是LinkedList需要维护双向链表的关系,所有存储效率上面会略逊于ArrayList

ArrayList的时间主要耗时在容量扩容,数据迁移上面,如果我们一次性初始化容量,应该还可以有提升的空间,再来对比看看,有恐怖的50%的提升空间

Linked的优势在于头部插入的效率,只需要修改头部元素的指针就可以做到,而数组还需要移动后续的数据,所有效率远远低于LinkedList

对于get,set的操作,链表内部通过二分查找,数组可以通过下标直接访问元素,所以效率高于LinkedList

基于以上比较,我们基本上可以确定
如果只是存放数据,并进行j简单的迭代情况下,我们一般采用集合的效率最高,

如果涉及到频繁的修改元素,就应该采用LinkedList

Atas ialah kandungan terperinci java中对比ArrayList与LinkedList的图文详情. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!