ArrayList
与它类似的是LinkedList,和LinkedList相比,它的查找和访问元素的速度较快,但新增,删除的速度较慢。
小结:ArrayList底层是用数组Object[] elementData实现的存储。
特点:查询效率高,增删效率低,线程不安全。使用频率很高。
ArrayList 底层数组大小
无参构造函数
源码注释:Constructs an empty list with an initial capacity of ten.
构造一个初始容量为10的空列表。
有参构造函数
初始化的时候指定底层数组的大小
ArrayList 新增
add(E e) 新增会扩容
add(int index, E element) 在指定位置插入指定元素
拷贝数组: 它是复制了一个数组,从index(传进来的,如果是 6,那么就是 index 6) 的位置开始的,然后把它放在了index(传进来的, 如果是 6,那么就是 6+1 ) +1的位置。腾出来的位置给新增的元素。
ArrayList 删除
remove(int index); 和新增一样也是拷贝数组,删除的位置被覆盖了。
为什么ArrayList要比LinkedList快得多
论遍历ArrayList要比LinkedList快得多,ArrayList遍历最大的优势在于内存的连续性,CPU的内部缓存结构会缓存连续的内存片段,可以大幅降低读取内存的性能开销。
初始化数组大小
ArrayList(int initialCapacity) ;
不会初始化数组大小。
初始化后 size 还是 0.