问答详情
源自:4-9 学生选课---应用泛型管理课程 Ⅰ

ArrayList问题

https://img3.mukewang.com/5d4a38ac000106e005850079.jpg请问这个是什么意思?   为什么要New一个ArrayList

提问者:qq_慕沐4213791 2019-08-07 10:34

个回答

  • 慕容0056306
    2019-08-07 13:45:24
    已采纳

    初始化,你可以理解成创建一个火车头,不然没有火车头的话后面的车厢都接不上去

  • 慕容0056306
    2019-08-14 15:41:13

    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)


  • 慕容0056306
    2019-08-14 15:24:26

    对不起,我解释错了,LinkList才是火车头,new ArrayList()是创建一个地址,此时只是一个空指针,当调用add()方法的时候才会在堆内存创建一个长度为10的数组,add达到数组容量上限就自动增长1.5倍,new ArrayList(5)带了参数5,会初始化的时候就创建一个长度为5的数组。总之ArrayList实际上就是一个数组。为了这个问题我看了三天源码!