java面试题-ArrayList 和 LinkedList 的区别是什么
远离八股文,面试大白话,通俗且易懂
看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。
java面试题汇总-目录-持续更新中
ArrayList 与 LinkedList 都是 List 接口的实现类,因此都实现了 List 的所有未实现的方法,只是实现的方式有所不同。
具体如下:
1.ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。
2.对于随机访问:
ArrayList因为是基于数组存储数据,所以,可以根据下标进行快速检索,时间复杂度是O(1)
LinkedList基于双向链表,每一个元素都是依靠地址和指针连接在一起,这时候查找某个元素的时间复杂度是O(n)
3.对于插入和删除操作:
ArrayList需要重新计算数组大小以及更新索引。
LinkedList则直接通过指针重新指向进行新增和删除数据。所以LinkedList优于ArrayList
4.LinkedList比ArrayList更占内存空间。因为双向链表除了存储数据外,还需要存储两个引用,一个指向前一个元素一个指向后一个元素。