ArrayList初始创建设定长度问题

问题描述

以往用数组,如int f[]=new int[10]时,可以直接访问对应位置数据,如int s=f[5]。今天,要使用到ArrayList时,发现构造函数中也可以设定长度
在这里插入图片描述
然后我就设定了长度,然后我惊呆了(我发现不能直接访问)

List<Integer> t=new ArrayList<Integer>(100);
System.out.println(t.get(5));

这里会报错,然后一脸懵逼我的觉得不科学 ,试了一下t.size()。果然,显示为0,那我一开始设置的100去哪里了?
然后我觉得我得去看看原码。
我发现构造函数中的确开辟了100的空间。
在这里插入图片描述
但是它没有改一个很关键的东西(size)
我们看看size方法的实现
在这里插入图片描述
在这里插入图片描述
它的默认值是0,所以之前是0,不是100可以解决了。
至于直接取数,报出异常的问题,我们去看看get方法的原码
在这里插入图片描述
这里有一个前置判断,我们去看看具体怎么定义的
在这里插入图片描述
这里又用到了我们的size,由于size是0,而不是100,所以符合判断条件,抛出了异常。。。

总结

对于ArrayList,想初始化设定长度,还是一个for循环插入吧。初始化不可靠。

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值