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

 更新时间:2024年11月04日 09:06:47   作者:一盏红烛,一杯烧酒  
在使用ArrayList时,初始化长度并不等同于直接设定数组大小,如通过构造函数指定长度,仅仅是在内部开辟了相应的存储空间,并不会改变ArrayList的实际元素个数,即size属性仍然为0,因此,尝试直接访问未实际添加元素的位置会引发异常

问题描述

以往用数组,如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循环插入吧。初始化不可靠。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • idea注解参数换行时间日期格式设置方法

    idea注解参数换行时间日期格式设置方法

    这篇文章主要介绍了idea注解参数换行时间日期格式设置方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • java线程池合理设置最大线程数和核心线程数方式

    java线程池合理设置最大线程数和核心线程数方式

    这篇文章主要介绍了java线程池合理设置最大线程数和核心线程数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • spring boot整合scurity做简单的登录校验的实现

    spring boot整合scurity做简单的登录校验的实现

    这篇文章主要介绍了spring boot整合scurity做简单的登录校验的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • mybatis sum(参数) 列名作为参数的问题

    mybatis sum(参数) 列名作为参数的问题

    这篇文章主要介绍了mybatis sum(参数) 列名作为参数的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • 详解Spring关于@Resource注入为null解决办法

    详解Spring关于@Resource注入为null解决办法

    这篇文章主要介绍了详解Spring关于@Resource注入为null解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • springboot集成springsecurity 使用OAUTH2做权限管理的教程

    springboot集成springsecurity 使用OAUTH2做权限管理的教程

    这篇文章主要介绍了springboot集成springsecurity 使用OAUTH2做权限管理的教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Java并发之ReentrantLock类源码解析

    Java并发之ReentrantLock类源码解析

    这篇文章主要为大家详细介绍了Java并发系列之ReentrantLock源码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • springboot docker jenkins 自动化部署并上传镜像的步骤详解

    springboot docker jenkins 自动化部署并上传镜像的步骤详解

    这篇文章主要介绍了springboot docker jenkins 自动化部署并上传镜像的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 深入讲解Java的对象头与对象组成

    深入讲解Java的对象头与对象组成

    由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象功能,这些标记字段组成了对象头,下面这篇文章主要给大家介绍了关于Java对象头与对象组成的相关资料,需要的朋友可以参考下
    2022-02-02
  • Java实现企业员工管理系统

    Java实现企业员工管理系统

    这篇文章主要为大家详细介绍了Java实现企业员工管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02

最新评论