new ArrayList()方法初始化容量是0还是10
我们都知道集合都会有自己默认的空间大小,像arrayList,虽然他是一个可变的集合,即使里面没有数据,但是也会占有固定的长度的空间。
所以在知道集合长度,且知道不会变的清空下,指定长度会更加的节省空间。
但是集合还会涉及扩容的问题,所以使用的时候也需要注意。至于为什么不直接使用数组,集合类一些好用的函数还是方便很多。
ok,回归正题。
有一次看到成员直接return new ArrayList()。此种情况下,我就思考,已经确定返回的是空集合,是不是返回 java.util下工具类提供的空数组更好呢。
所以确定一下 new ArrayList(); 的初始化过程,初始化容量。
首先需要确认:
查看 new ArrayList(); 只有短短一行,提示就是赋值了一个空数组。证明 new ArrayList()时的容量为0。
执行代码:
int size = new ArrayList().size();
// 此处输出结果为0
System.out.println("size = " + size);
证明结果确实为0,但是我们经常有听说arrayList的初始容量为10,这又是怎么回事呢? 而且ArrayList类,也确实有静态常量为10。
那么什么时候触发呢,我们一般新建了一个集合后,就会进行添加元素add()。我们查看add()方法。
需要注意这里的size,后续需要追溯这个size。
继续查看调用,这里有使用, 其中elementData是当前集合的元素,minCapacity就是前文提到的size。它是当前集合的size。不过add()中并没有看到该size的初始化代码,不过有一点需要注意,就是int的初始化变量是0,所以Math.max()计算得出使用了默认初始容量10.
结论:
new ArrayList()。未指定容量的情况下,创建的数组是0。 指定的情况下,则会创建对应大小的集合。
add()添加元素的时候,如何为空集合,则会创建初始化容量为10的集合
- 点赞
- 收藏
- 关注作者
评论(0)