“Arraylist与LinkedList有什么区别?”
一个工作4年的程序员去某互联网公司面试,被问到了这个问题。
如果大家不知道这个问题该怎么回答,可以在文章尾端扫码二维码领取我整理的50W字的大厂面试指南。
问题分析
ArrayList和LinkedList是Java集合框架中List接口的两个实现类,也是我们经常使用的集合类。
所以这个问题本身难度非常低,不过也是考察大家对于两个集合的理解来判断在工作之余是否有深度去思考过。
下面来看看这个问题的回答。
问题解答
关于这两个集合的区别,我认为有几个方面:
-
内部实现方面:ArrayList内部使用数组实现,通过索引来访问元素,支持快速随机访问 ; LinkedList内部使用双向链表实现,每个元素都包含一个指向前一个元素和后一个元素的引用,适合插入和删除操作
-
数据访问的时间复杂度不同:ArrayList的时间复杂度为O(1),LinkedList需要从头或尾开始遍历链表,直到找到目标位置,时间复杂度为O(n)。
-
空间占用方面:ArrayList使用数组来存储数据,所以占用的空间是连续的,可能会产生内存碎片;LinkedList通过链表连接元素,每个元素都包含前后节点的引用,占用的空间相对较大。
总结
大家知道怎么回答了吗?
如果你喜欢我的作品,记得点赞收藏加关注哦!!!
另外,我将所有Java面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前总计超过50W字!
【想领取面试文档的小伙伴可以点击文章底部名片无套路免费赠送给大家!】
需要面试宝典、大厂面试文档的小伙伴可以扫描下方二维码
↓↓↓↓↓↓↓↓↓↓↓↓↓