ArrayList在Java集合中的位置,
ArrayList原理:
transient Object[] elementData;
ArrayList通过数组来实现。
默认构造方法会构造一个容量为10的空数组。
自动扩容:
在每次添加新元素(Add方法)时,都会通过grow方法判断当前list的size和list的容量的关系,以10 -> 15(1.5倍长度进行扩容)
创建一个新的长度的数组(第一次扩容是15),并复制原数组,赋给list存储对象。
copyOf方法最终采用native(操作系统底层)方法(C/C++)来完成。
也可以看到:
1,ArrayList不是线程安全的。
2,为什么ArrayList初始容量大小为10? 可能要问作者Josh Bloch, Neal Gafter