ArrayList与LinkedList的主要差异是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计6128个文字,预计阅读时间需要25分钟。
ArrayList和LinkedList的主要区别在于它们的内部实现和数据结构。
- ArrayList是基于数组实现的,可以动态扩容,但扩容时会创建新的数组并复制旧数据,这可能导致性能问题。- LinkedList是基于双向链表实现的,每个元素包含数据和指向前后元素的指针,插入和删除操作更高效,但查找操作相对较慢。
ArrayList 和 LinkedList 有什么区别,是面试官非常喜欢问的一个问题。可能大部分小伙伴和我一样,能回答出“ArrayList 是基于数组实现的,LinkedList 是基于双向链表实现的。”
关于这一点,我之前的文章里也提到过了。但说实话,这样苍白的回答并不能令面试官感到满意,他还想知道的更多。
那假如小伙伴们继续做出下面这样的回答:
“ArrayList 在新增和删除元素时,因为涉及到数组复制,所以效率比 LinkedList 低,而在遍历的时候,ArrayList 的效率要高于 LinkedList。”
面试官会感到满意吗?我只能说,如果面试官比较仁慈的话,他可能会让我们回答下一个问题;否则的话,他会让我们回家等通知,这一等,可能意味着杳无音讯了。
为什么会这样呢?为什么为什么?回答的不对吗?
暴躁的小伙伴请喝口奶茶冷静一下。冷静下来后,请随我来,让我们一起肩并肩、手拉手地深入地研究一下 ArrayList 和 LinkedList 的数据结构、实现原理以及源码,可能神秘的面纱就揭开了。
ArrayList 是如何实现的?
ArrayList 实现了 List 接口,继承了 AbstractList 抽象类,底层是基于数组实现的,并且实现了动态扩容。
本文共计6128个文字,预计阅读时间需要25分钟。
ArrayList和LinkedList的主要区别在于它们的内部实现和数据结构。
- ArrayList是基于数组实现的,可以动态扩容,但扩容时会创建新的数组并复制旧数据,这可能导致性能问题。- LinkedList是基于双向链表实现的,每个元素包含数据和指向前后元素的指针,插入和删除操作更高效,但查找操作相对较慢。
ArrayList 和 LinkedList 有什么区别,是面试官非常喜欢问的一个问题。可能大部分小伙伴和我一样,能回答出“ArrayList 是基于数组实现的,LinkedList 是基于双向链表实现的。”
关于这一点,我之前的文章里也提到过了。但说实话,这样苍白的回答并不能令面试官感到满意,他还想知道的更多。
那假如小伙伴们继续做出下面这样的回答:
“ArrayList 在新增和删除元素时,因为涉及到数组复制,所以效率比 LinkedList 低,而在遍历的时候,ArrayList 的效率要高于 LinkedList。”
面试官会感到满意吗?我只能说,如果面试官比较仁慈的话,他可能会让我们回答下一个问题;否则的话,他会让我们回家等通知,这一等,可能意味着杳无音讯了。
为什么会这样呢?为什么为什么?回答的不对吗?
暴躁的小伙伴请喝口奶茶冷静一下。冷静下来后,请随我来,让我们一起肩并肩、手拉手地深入地研究一下 ArrayList 和 LinkedList 的数据结构、实现原理以及源码,可能神秘的面纱就揭开了。
ArrayList 是如何实现的?
ArrayList 实现了 List 接口,继承了 AbstractList 抽象类,底层是基于数组实现的,并且实现了动态扩容。

