• 是否保证线程安全:ArrayList和LinkedList都不是线程安全
    • 底层数据结构:ArrayList底层数据结构是Object数组;LinkedList则是双向链表
    • 插入和删除是否受元素位置的影响
      • ArrayList采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。非指定位置插入和删除元素方法,时间复杂度为O(1);指定位置插入和删除方法,时间复杂度为O(n-i)。(因为在进⾏上述操 作的时候集合中第 i 和第 i 个元素之后的(n-i)个元素都要执⾏向后位/向前移⼀位的操作)
      • LiskedList采用链表存储,非指定位置插入和删除元素方法时间复杂度不受元素位置影响,近似O(1);如果要在指定位置插入和删除元素,则时间复杂度近似O(n)(因为需要先移动到指定位置再插入)
    • 是否支持快速随机访问:LinkedList不支持,ArrayList支持(对应于 get(int index) ⽅法)
    • 内存空间占⽤:ArrayList的空间浪费主要体现在,在list列表的结尾会预留⼀定的容量空间,⽽LinkedList的空间花费则体现在它的每⼀个元素都需要消耗⽐ArrayList更多的空间(因为要存放直接后继和直接前驱以及数据)