【你问我答】Arraylist和linkedlist的区别?

问题描述:

Arraylist和linkedlist有什么区别?

回答有奖:

选取一位认真回答问题的牛友,赠送200牛币!
▶回答尽量有自己的思考,不要单纯的只是复制粘贴定理定义,或者他人blog哦~

你问我答问题汇总:点击进入
关注你问我答栏目:点击关注

你问我答 - 答问题,成大佬,拿牛币!
你问我答是牛客新栏目,每周1期几个面试中真实遇到的问题,
牛友在问题贴下留下自己的知识,经验与见解,
帮助更多牛友了解更多技术相关知识!
#悬赏##Java工程师##Java##面试题目#
全部评论
线程安全:ArrayList和LinkedList都不是线程安全的。 底层数据结构:ArrayList底层采用的是Object数组,LinkedList底层是双向链表数据结构 插入和删除是否受位置影响:① ArrayList 采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。 比如:执行add(E e)方法的时候, ArrayList 会默认在将指定的元素追加到此列表的末尾,这种情况时间复杂度就是O(1)。但是如果要在指定位置 i 插入和删除元素的话(add(int index, E element))时间复杂度就为 O(n-i)。因为在进行上述操作的时候集合中第 i 和第 i 个元素之后的(n-i)个元素都要执行向后位/向前移一位的操作。 ② LinkedList 采用链表存储,所以插入,删除元素时间复杂度不受元素位置的影响,都是近似 O(1)而数组为近似 O(n)。 是否支持随机快速访问:LinkedList不支持随机快速访问,ArrayList支持。(get方法) 内存空间占用:LinkedList每个元素所占空间比ArrayList多,因为是双向链表所以要有额外的空间来存放直接前驱和直接后继。
1 回复
分享
发布于 2020-05-13 09:49
arraylist用数组实现,随机查找快,增删慢,linkedlist是链表,增删快,随机查找慢
点赞 回复
分享
发布于 2020-05-12 16:15
百信银行
校招火热招聘中
官网直投
1. ArrayList的实现是基于数组来实现的,LinkedList的基于双向链表来实现。这两个数据结构的逻辑关系是不一样,当然物理存储的方式也会是不一样。  2. LinkedList比ArrayList更占内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。 3. 对于随机访问(get和set),ArrayList要优于LinkedList。 4. 对于插入和删除操作,LinkedList优于ArrayList(理论上),实际并非如此(实际上ArrayList不论是插入还是删除效率,在元素数量趋多时,都是要优于LinkedList的),因为这其中涉及数组与链表在元素操作方式、时间与空间上的复杂度计算问题,所以具体问题须具体分析和佐证。
点赞 回复
分享
发布于 2020-05-12 17:50
据我个人理解,通常情况下,ArrayList和LinkedList的区别有以下几点: 1. ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于双向链表的数据结构; 2. 对于随机访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针; 3. 对于添加和删除操作add和remove,一般大家都会说LinkedList要比ArrayList快,因为ArrayList要移动数据,但是实际情况可能会有差异。 综上所述,在需要频繁读取集合中的元素时,使用ArrayList效率较高,而在插入和删除操作较多时,使用LinkedList效率较高。
点赞 回复
分享
发布于 2020-05-19 10:15

相关推荐

点赞 3 评论
分享
牛客网
牛客企业服务