关于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循环插入吧。初始化不可靠。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java使用list集合remove需要注意的事项(使用示例)
List集合的一个特点是它其中的元素是有序的,也就是说元素的下标是根据插入的顺序来的,在删除头部或者中间的一个元素后,后面的元素下标会往前移动,本文给大家介绍Java使用list集合remove需要注意的事项,感兴趣的朋友一起看看吧2022-01-01
解析Java线程编程中的线程安全与synchronized的使用
这篇文章主要介绍了Java线程编程中的线程安全与synchronized的使用,synchronized多线程使用时一定要注意线程之间的冲突问题,需要的朋友可以参考下2015-12-12
spring boot整合redis主从sentinel方式
这篇文章主要介绍了spring boot整合redis主从sentinel方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-03-03
解决Maven本地仓库明明有对应的jar包但还是报找不到的问题
这篇文章主要介绍了解决Maven本地仓库明明有对应的jar包但还是报找不到的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-10-10


最新评论