首页 > 编程语言 >[Java基础]ArrayList

[Java基础]ArrayList

时间:2024-07-21 22:41:47浏览次数:11  
标签:扩容 Java ArrayList elementData 基础 数组 长度 方法

ArrayList

ArrayList是List接口的实现类,它是支持根据需要而动态增长的数组。java中标准数组是定长的,在数组被创建之后,它们不能被加长或缩短。这就意味着在创建数组时需要知道数组的所需长度,但有时我们需要动态程序中获取数组长度。ArrayList就是为此而生的,但是它不是线程安全的,外ArrayList按照插入的顺序来存放数据

ArrayList扩容发生在add()方法调用的时候, 调用ensureCapacityInternal()来扩容的,通过方法calculateCapacity(elementData, minCapacity)获取需要扩容的长度
ensureExplicitCapacity方法可以判断是否需要扩容
ArrayList扩容的关键方法grow(): 获取到ArrayList中elementData数组的内存空间长度 扩容至原来的1.5倍
调用Arrays.copyOf方法将elementData数组指向新的内存空间时newCapacity的连续空间
从此方法中我们可以清晰的看出其实ArrayList扩容的本质就是计算出新的扩容数组的size后实例化,并将原有数组内容复制到新数组中去。

标签:扩容,Java,ArrayList,elementData,基础,数组,长度,方法
From: https://www.cnblogs.com/DCFV/p/18315070

相关文章

  • JavaWeb MyBatis案例
    JAVAWEBMyBatis视频学习笔记MyBatis案例1环境准备1.1数据库准备1.2准备一个Brand实体类1.3准备测试用例1.4安装MyBatisX插件2编写接口2.1编写查询所有2.1.1编写Mapper接口2.1.2编写SQL映射文件2.1.3编写测试语句完成测试2.1.4BugFix2.2查看详情2.2.1编......
  • C# 基础控件
    一、设置窗体清晰度择当前项目,单击鼠标右键,选择【添加】——【类】;选择【应用程序清单文件】;打开刚才建立的清单文件app.manifest,解开<applicationxmlns="urn:schemas-microsoft-com:asm.v3">的注释;   二、DataGridViewRowHeadersVisible:false隐藏第一个空白列......
  • 网络基础 Modbus协议学习总结
    协议简介Modbus协议,首先从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议,总线就意味着有主机,有从机,这些设备在同一条总线上。Modbus支持单主机,多个从机,最多支持247个从机设备。关于Mod,因为这种协议最早被用在PLC控制器中,准确的说是Modicon公司的PLC控制器,这也是Modbus......
  • Java基础06:变量、常量、作用域
    1.变量Java是一种强类型语言,每个变量都必须声明其类型。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明,只有在变量声明以后,才能为其分配相应长度的存储单元,声明格式为:typevarName=value,varName2=value2;//数据类型变......
  • java入门—JDK下载、环境配置、IDEA开发工具使用
    JavaSE入门—初识Java、JDK开发环境下载、Path环境配置、IDEA开发工具下载、HelloWorld详解1.Java概述1.1Java发展概述1.2Java语言特点及应用1.3Java技术体系2.Java的开发环境(JDK)搭建2.1JDK的下载2.2JDK与JRE3.Java环境配置3.1path、JAVA_HOME环境变量配......
  • Java基本语法篇 [2](运算符与键盘输入流程详解)
    ......
  • JS基础知识总结(4)
    一、字符串反转的方式varstr1=str.split("").reverse().join("");//记住这个让字符串反转的方式二、实现某个字符的“偏移”(也就是说ASCII码值往后挪,往前挪多少位)。/***@description字符串加密*@param{number}offset偏移量......
  • Linux基础命令指南三(重定向,管道,Vim)
    目录重定向1.输出重定向2.输入重定向 管道 tee命令Vim的使用重定向在Linux系统中进程使用文件描述符来获取输入与输出,默认有标准输入(键盘),标准输出(终端),标准错误输出(终端),描述符分别为0,1,21.输出重定向顾名思义就是更改进程输入的方式,例如将本来输出到终端的信息输......
  • 计算机Java项目|基于SpringBoot的高校办公室行政事务管理系统
    作者主页:编程指南针作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与......
  • salesforce零基础学习(一百四十)Record Type在实施过程中的考虑
    本篇参考: salesforce零基础学习(二十九)RecordTypes简单介绍https://help.salesforce.com/s/articleView?id=sf.customize_recordtype_considerations.htm&type=5https://trailhead.salesforce.com/zh-CN/trailblazer-community/feed/0D54S00000FWK1gSAH我在之前的博客中简单......