为了账号安全,请及时绑定邮箱和手机立即绑定

ArrayList问题

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

正在回答

3 回答

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

0 回复 有任何疑惑可以回复我~

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)


0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

qq_慕沐4213791 提问者

谢谢解答
2019-08-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409776    人
  • 解答问题       4339    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

ArrayList问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信