1. ArrayList

    1) 基于数组,需要连续内存
    2) 随机访问快(指根据下标访问,计算即可)
    实现RandomAccess的List,会通过下标获取元素,否则使用迭代器。
    3) 尾部插入、删除性能可以,其他部分插入、删除都会移动数据,因此性能会低。
    4) 可以利用cpu缓存,局部性原理(CPU缓存会加载相邻的list元素,能够根据内存地址访问到,而linkedlist的指针不一定指向相邻元素)

    1. LinkedList

    1)基于双向链表,无需连续内存
    2)随机访问慢(要沿着链表遍历)
    3)头尾插入删除性能高,中间插入很慢(要用next先找到 )
    4)占用内存多(指针由Node元素组成)