请问这个是什么意思? 为什么要New一个ArrayList
初始化,你可以理解成创建一个火车头,不然没有火车头的话后面的车厢都接不上去
ArrayList源码中最重要的就是数组的扩容,你知道数组一旦创建就不能改变容量了,但是List集合可以随便添加多少元素,那么用数组怎么实现list的呢,就是system.copy方法,复制!创建一个新的数组,默认长度是原数组的1.5倍,不够再扩1.5倍,直到达到Integer.MAX_VALUE为止,然后把原数组复制到新数组,这个复制可以指定索引,就是你可以指定从哪儿开始复制,复制在什么位置。搞懂这个基本上arraylist的方法就全搞懂了,比如删除Arr=[1,2,3,4,5]中的3就是把4后面的长度-3个元素复制到3的位置就完事了,如下。
System.arraycopy(Arr, 3, Arr, 4, size-3)
对不起,我解释错了,LinkList才是火车头,new ArrayList()是创建一个地址,此时只是一个空指针,当调用add()方法的时候才会在堆内存创建一个长度为10的数组,add达到数组容量上限就自动增长1.5倍,new ArrayList(5)带了参数5,会初始化的时候就创建一个长度为5的数组。总之ArrayList实际上就是一个数组。为了这个问题我看了三天源码!