向一个ArrayList集合里面存放一千万个int类型数据,当ArrayList初始容量为默认值时;需要3800多毫秒,初始容量为一万时,需要2300多毫秒,而当初始容量为十万时;需要3700多毫秒,时间增加了。(不同机器的时间可能不同,使用的是JDK1.8)。
疑问一:初始容量不是越大越好?那么初始容量为多大时,性能最优呢?
疑问二:为什么初始容量加大后,性能会降低?
测试代码如下:
@Test
public void test(){
long start = System.currentTimeMillis();
List<Integer> list = new ArrayList<>(10000);
for (int i = 0; i < 10000000; i++) {
list.add(i);
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}