欢迎光临散文网 会员登陆 & 注册

千锋教育Java入门全套视频教程(java核心技术,适合java零基础,Java

2023-07-22 10:46 作者:bili_48707043445  | 我要投稿

ArrayList 和 LinkedList

1.ArrayList 是基于数组实现的,元素存放的位置都是连续的,查改效率高,增删效率低,线程不安全;LinkedList是基于双链表实现的,元素存放的位置不一定是连续的,增删的效率高,查改的效率低,线程不安全。


2.LinkedList 比 ArrayList 更占内存,因为LinkedList 的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。对于随机访问,ArrayList要优于LinkedList。


3.对于插入和删除操作,LinkedList 优于ArrayList (理论上),实际上并非如此,如果在List靠尾部的地方插入,那么ArraysList 只需要移动较少的数据,而LinkedList 则需要一直查找到列表尾部,反而耗费较多时间,此时ArrayList 就比 LinkedList 快。


(1) 如果应用程序对数据有较多的随机访问,ArrayList对象要优于LinkedList对象


(2) 如果应用程序有更多的插入或者是删除操作,较少的随机访问,LinkedList对象要优于ArrayList对象


ArrayList

ArrayList类实现类可变数组的大小,存储在内的数据称为元素。它还提供了快速基于索引访问元素的方式,对尾部成员的增加和删除支持较好。使用ArrayList创建的集合,允许对集合中的元素进行快速的随机访问,不过,向ArrayList中插入与删除元素的速度相对较慢。


一个用数组实现的List,能进行快速的随机访问,效率高而且实现了可变大小的数组。

它是可以调整大小的数组,实现了List接口。实现所有可选列表操作,并允许所有元素包括null。除了实现List接口之外,该类还提供了一些方法来操作内部使用的存储列表的数组的大小。内部封装一个数组,用数组来存储数据。内部数组的默认初始容量为10,存满后1.5倍增长。



LinkedList

LinkedList类采用链表结构保存对象,这种结构的优点是便于向集合中插入或者删除元素。需要频繁向集合中插入和删除元素时,使用LinkedList类比ArrayList类效果高,但是LinkedList类随机访问元素的速度则相对较慢。这里的随机访问是指检索集合中特定索引位置的元素。


双链表实现了List 和 Deque接口。实现所有可选列表操作,并允许所有元素(包括null)。所有的操作都能像双向列表一样。索引到列表中的操作将从开始或者结束遍历列表,以更接近指定的索引为准。


对顺序访问进行了优化,但随机访问的速度相对较慢。可以作为栈或队列来用。



千锋教育Java入门全套视频教程(java核心技术,适合java零基础,Java的评论 (共 条)

分享到微博请遵守国家法律