ArrayList的初始化容量已经变了,不再是以前的10了,而是初始化为0,等到第一次add的时候再初始化为10。 做这样的改动,就是延迟初始化ArrayList的实际容量,应该是考虑到空间的问题,如果一开始就初始化为10,这个大小为10的数组中就全部是存的null,如果数量多了,这个也是很大的空间。应该是这样的原因吧。
所以确定一下 new ArrayList(); 的初始化过程,初始化容量。 首先需要确认: 查看new ArrayList(); 只有短短一行,提示就是赋值了一个空数组。证明 new ArrayList()时的容量为0。 执行代码: intsize=newArrayList().size();// 此处输出结果为0System.out.println("size = "+size); 证明结果确实为0,但是我们...
大部分时候,初始容量只是一个经验值。因为必须要有初始容量,而想要得到工业上效果最好的初始容量,需要...
HashMap设置16是有理由的,而ArrayList设置10是没有理由的,可能对于作者来说是个吉利数字???也可能...
一直记得ArrayList的初始容量大小是10,今天再次看ArrayList的源码(版本:Jdk 7u80)时发现在构造函数的注释上写着初始化容量是10,但是构造函数中却没有指定初始容量,仅仅初始化了一个空的数组。应该是不知道在哪个版本中已经修改了,我却还记着之前从别人口里得来的一句话:初始容量是10。实际上初始容量已经是0了,写出...
ArrayList的初始化容量已经变了,不再是以前的10了,而是初始化为0,等到第一次add的时候再初始化为10。 做这样的改动,就是延迟初始化ArrayList的实际容量,应该是考虑到空间的问题,如果一开始就初始化为10,这个大小为10的数组中就全部是存的null,如果数量多了,这个也是很大的空间。应该是这样的原因吧。
假设现在你自己要写个类似的ArrayList,你怎么设置初始容量?是不是要根据目前你要解决的问题来设置啊。
这个还是有一定的考虑吧,初始容量太小会频繁扩容,初始容量太大又没必要而且还占据连续的存储地址和空间...
ArrayList在实际开发使用中经常被频繁地进行添加、删除等操作,而为了提高性能,初始化容量大小为10预先分配...