Arraylist与LinkedList区别有:1、数据结构不同;2、空间灵活性;3、安全性不同;4、效率不同;5、主要控件开销不同。ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)双向链表的数据结构。arraylist可以直接通过数组下标找到元素。
1、数据结构不同
ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)双向链表的数据结构。arraylist可以直接通过数组下标找到元素。linkedlist要通过移动指针遍历每个元素,直到找到需要的元素为止。arraylist查找元素的速度比linkedlist快。
2、空间灵活性
ArrayList其实较好需要指定初始容量的(当然有些程序员为了偷懒,根本不会去初始化,这其实对于代码质量低的项目而言是无关紧要的)《1.其实在代码规范里,都要手动设置,只是我们用默认而已,如果公司用一些代码规范的工具来做代码质量,会要求写上的 2.如果只是产品达到一定的量,初始容量还是有好处的》
LinkedList是比ArrayList灵活的,是根本不需要指定初始容量的
3、安全性不同
从线程安全性来讲:ArrayList是线程不安全的,而LinkedList是线程安全的。
4、效率不同
当随机访问List(get和set操作)时,ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。ArrayList对于数据查询非常快,但是插入与删除元素比较慢;
当对数据进行增加和删除的操作(add和remove操作)时,LinkedList是恰好相反的,它的查询速度非常慢,但是插入与删除元素的速度非常快。
5、主要控件开销不同
ArrayList主要控件开销在于需要在lList列表预留一定空间;而LinkList主要控件开销在于需要存储节点信息以及节点指针。
延伸阅读:
什么是Arraylist?
ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。
List接口的大小可变数组的实现,位于API文档的java.util.ArrayList<E>。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector类,除了此类是不同步的。)
size、isEmpty、get、set、iterator 和 listIterator 操作都以固定时间运行。add 操作以分摊的固定时间 运行,也就是说,添加 n 个元素需要 O(n) 时间。其他所有操作都以线性时间运行(大体上讲)。与用于 LinkedList实现的常数因子相比,此实现的常数因子较低。
每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加元素会带来分摊固定时间开销那样简单。
文章标题:来说说Arraylist与LinkedList区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37910