一直以来记得都是ArrayList的底层是数组,初始容量为10,但是今天群里有人说了初始容量是0,当第一add方法时才会变成10,我没仔细看jdk源码,只看到ArrayList构造方法上注释为,初始容量为10,构造一个初始容量为10的空list。以为默认就是10,经过仔细分析才知道当第一次添加元素时才会扩容为10。
1 | private static final int DEFAULT_CAPACITY = 10; |
1 | public boolean add(E e) { |
1 | private void ensureCapacityInternal(int minCapacity) { |
1 | private static int calculateCapacity(Object[] elementData, int minCapacity) { |
1 | private void ensureExplicitCapacity(int minCapacity) { |
1 | private void grow(int minCapacity) { |
1 | public class Test |
同理好像map集合也是这样,当创建不用的时候,容量为空可以省空间,这也是懒加载机制。用的时候才增加到容量为10.