ArrayList和LinkedList异同

404 阅读1分钟

1.是否保证线程安全

ArrayList和LinkedList都没有加同步,故都是线程不安全的。

2.底层数据结构

ArrayList用的是Object数组
LinkedList用的是双向链表

3.插入和删除是否受元素位置影响

ArrayList:是,时间复杂度近似O(n)
 由于是数组,如果是插入最后一个元素就是O(1),而如果是插入指定位置i,那么复杂度就是O(n-i)
LinkedList:否,时间复杂度近似O(1)

4.是否支持快速随机访问

ArrayList支持,LinkedList不支持
快速随机访问就是由元素序号访问到元素

5.内存空间占用

ArrayList的空间浪费主要体现在list列表结尾会留一段容量空间,
LinkedList的空间浪费主要体现在每个元素都需要存放前级和后继指针。

两者源码分析:一篇文章搞定ArrayList和LinkedList所有面试问题