开发者

关于ArrayList初始创建设定长度问题

开发者 https://www.devze.com 2024-11-04 10:29 出处:网络 作者: 一盏红烛,一杯烧酒
目录问题描述我们看看size方法的实现总结问题描述 以往用数组,如int f[]=new int[10]时,可以直接访问对应位置数据,如int s=f[5]。
目录
  • 问题描述
  • 我们看看size方法的实现
  • 总结

问题描述

以往用数组,如int f[]=new int[10]时,可以直接访问对应位置数据,如int s=f[5]。

今天python,要使用到ArrayList时,发现构造函数中也可以设定编程客栈长度

关于ArrayList初始创建设定长度问题

然后我就设定了长度,然后我惊呆了(我发现不能直接访问)

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

这里会报错,然后一脸懵逼我的觉得不科学 ,试了一下t.size()。

果然,显示为0,那我一开始设置的100去哪里了?

然后我觉得我得去看看原码。

我发现构造函数中的确开辟了100的空间。

关于ArrayList初始创建设定长度问题

但是它没有改一个很关键的东西(size)

我们看看size方法的实现

关于ArrayList初始创建设定长度问题

关于ArrayList初始创建设定长度问题

它的默认值是0编程客栈,所以之前是0,不是100可以解决了。

至于直接取数,报出异常的问题,我们去看看get方法的原码

关于ArrayList初始创建设定长度问题

这里有一个前置判断,我们去看看具体怎么定义的

关于ArrayList初始创建设定长度问题

这里又用到了我们的size,由于size是0,而不是100,所以符合判断条件,抛出了异常。。。

总结

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号