首页 > 试题广场 >

ArrayList和LinkedList的区别,如果一直在l

[问答题]
请你简单介绍一下ArrayList和LinkedList的区别,并说明如果一直在list的尾部添加元素,用哪种方式的效率高?
ArrayList采用数组数组实现的,查找效率比LinkedList高。LinkedList采用双向链表实现的,插入和删除的效率比ArrayList要高。一直在list的尾部添加元素,LinkedList效率要高
发表于 2019-05-05 15:08:02 回复(0)
更多回答

ArrayList实现了List接口,底层使用的是动态数组,之所以称为动态数组,是因为Arraylist在数组元素超过其容量大,Arraylist可以进行扩容(针对JDK1.8 数组扩容后的容量是扩容前的1.5倍);

LinkedList底层使用的是链表

动态数组查询特定元素比较快,插入和删除不如链表快

如果一直在尾部添加元素的话,ArrayList的效率会更高一些,LinkedList每次增加会new一个Node对象来保存新增加的元素,当数据量比较小的时候时间不明显,数据量很大的时候new一个Node的时间会大于动态数组扩容的时间,这样ArrayList的效率就搞了

发表于 2019-10-05 15:58:10 回复(0)
ArrayList采用数组数组实现的,查找效率比LinkedList高。LinkedList采用双向链表实现的,插入和删除的效率比ArrayList要高。一直在list的尾部添加元素,LinkedList效率要高。
发表于 2019-04-27 13:35:06 回复(1)
ArrayList 数组结构:改查效率高,通过索引不需要遍历
LinkedList 链表结构:增删效率高,只修改前后指针
发表于 2019-02-12 17:48:40 回复(0)
ArrayList 底层数据结构是一中线性的数据结构 ArrayList 可以理解为动态数组,它的容量能动态增长,该容量是指用来存储列表的数组的大小,随着向ArrayList中不断添加元素,其容量也自动增长, ArrayList 容许包括null在内所有的元素 ArrayList 是List接口的非同步实现 ArrayList 是有序 LinkedList 基于链表的list接口的非同步实现 LinkedList 是容许包括null在内的所有元素 LinkedList 是有序的 ArrayList 访问任意位置,效率高 LinkedList 两端数据操作效率高
发表于 2019-01-09 20:59:05 回复(0)
我觉得要考虑是否扩容的情况吧 因为arraylist底层增删慢是应为他扩容需要重新创建一个数组 调用 而linkedList不用 像如果大量数据的插入 肯定arraylist慢 但是如果说不扩容插入的话 我感觉还是arraylist快一些
发表于 2021-01-30 01:40:29 回复(1)
ArrayList和LinkedList都实现了List接口,ArrayList底层使用的是动态数组,之所以称为动态数组,是因为ArrayList在添加数据超过其容量时,他底层会进行扩容。
LinkedList底层是链表,增加和删除数据比ArrayList快,查询数据没有ArrayList快。
如果一直在尾部添加数据数据量较大的话,ArrayList效率高,数据量较小的话,LinkedList效率高。
发表于 2020-02-28 15:28:42 回复(0)
 LinkedList每次增加的时候,会new 一个Node对象来存新增加的元素,所以当数据量小的时候,这个时间并不明显,而ArrayList需要扩容,所以LinkedList的效率就会比较高,其中如果ArrayList出现不需要扩容的时候,那么ArrayList的效率应该是比LinkedList高的,当数据量很大的时候,new对象的时间大于扩容的时间,那么就会出现ArrayList'的效率比Linkedlist高了.
发表于 2019-08-19 09:33:53 回复(0)
Linklist的效率高
发表于 2019-04-29 18:12:08 回复(0)
ArrayList和LinkedList都继承自传统的list,ArrayList它是由数组后推得到的;而LindedLsit是由常规的双向链表实现的
发表于 2019-04-27 17:01:23 回复(0)