add扩容规则:
ArrayList在创建后数组的容量为0,每次扩容规则上次容量的1.5倍
addAll扩容规则:
如果现在已经是十个元素了,利用addall再添加一个有六个元素的集合,此时扩容量不是15,不是22,而是16
Iterator fail-fast与fail-safe区别
fail-fast:遍历时不可添加元素,添加元素会报错
fast-safe:遍历时可以添加元素,遍历不会报错
ArrayList和LinkedList的比较
ArrayList:
1.基于数组,需要连续内存
2.随机访问快(根据下标访问,只需要看下标)
3.尾部插入,删除性能可以,其他部分插入删除都会移动数据,性能会低
4.利用cpu缓存,局部性原理(数组更好的缓存)
LinkedList:
1.基于双向链表,无须连续内存
2.随机访问慢(要沿着链表遍历)
3.头部插入,删除性能高
4.占用内存大