关于arrayList扩容的一些体会

昨天在写代码的时候出现了一个ArrayList的问题,很基础的东西,但是平时写代码的时候没有注意。

问题描述:

 在一个固定循环次数的里面添加一个ArrayList,用这个list接收每次循环的model,因为这个循环是固定的,循环次数是12次。当我执行这个循环的时候,发现我明明循环了12次,可是这个list里面却一共15个model,其中最后3个都是null,很疑惑。

问题定位:

debug了几次发现恍然大悟,一开始自己定位的问题是,ArrayList的初始容量的问题,问题就是在这里的,但是,自己的想法却是不对的,我认为ArrayList的初始容量是15,所以会出现我只放了12个,后面的3个自动为null,于是将list初始化时候就指定容量为12,问题到此解决。

问题进一步发现:

当我打开ArrayList的定义时,我发现,我大错特错了,ArrayList的初始容量其实是10,当超过这个容量时,会按照当前容量的1.5倍进行扩容,所以,在进行一次扩容之后,就是16了

总结:

平时关于Java的基础知识也背了不少,可是,实际开发中这些全都没有注意!所以以后开发的时候不能光看效率,编写代码的时候要更加认真,谨慎。只有这样才可以减少bug的发生。

在已经知道容器大小的情况下要给容器初始容量

------------------不摔跤就不会长记性-------谨记--------------

另外附上一张图:

猜你喜欢

转载自blog.csdn.net/dghkgjlh/article/details/84874741
今日推荐