- ArrayList
1) 基于数组,需要连续内存
2) 随机访问快(指根据下标访问,计算即可)
实现RandomAccess的List,会通过下标获取元素,否则使用迭代器。
3) 尾部插入、删除性能可以,其他部分插入、删除都会移动数据,因此性能会低。
4) 可以利用cpu缓存,局部性原理(CPU缓存会加载相邻的list元素,能够根据内存地址访问到,而linkedlist的指针不一定指向相邻元素)
- LinkedList
1)基于双向链表,无需连续内存
2)随机访问慢(要沿着链表遍历)
3)头尾插入删除性能高,中间插入很慢(要用next先找到 )
4)占用内存多(指针由Node元素组成)