首页 > 编程语言 >java中的ArrayList的add()源码解析

java中的ArrayList的add()源码解析

时间:2023-01-01 10:22:05浏览次数:42  
标签:10 java int ArrayList elementData add 源码 public

使用无参构造器创建的ArrayList对象,示例代码如下:

public class ArrayListTest {
    public static void main(String[] args) {
        List list = new ArrayList();
        // 10
        for(int i = 0;i< 10;i++){
            list.add(i);
        }

        // 5
        for(int i = 0;i<5;i++){
            list.add(i);
        }

        // 7
        for(int i = 0;i<7;i++){
            list.add(i);
        }
    }
}

使用无参构造器创建的ArrayList对象,add()方法具体步骤如下:

 使用有参构造器创建的ArrayList对象,示例代码如下:

public class ArrayListTest {
    public static void main(String[] args) {
        List list = new ArrayList(8);
        // 10
        for(int i = 0;i< 10;i++){
            list.add(i);
        }

        // 5
        for(int i = 0;i<5;i++){
            list.add(i);
        }

        // 7
        for(int i = 0;i<7;i++){
            list.add(i);
        }
    }
}

使用有参构造器创建的ArrayList对象,add()方法具体步骤如下:

 总结:

  当调用ArrayList无参构造器时,elementData = { },即elementData没有存储能力,调用add()方法时,首先需要对elementData进行初始化,默认按照10个长度,当容量不足时,再进行扩容,按照当前容量的1.5倍进行扩容,将原数组的数据复制到扩容后的新数组当中。

  当调用ArrayList有参构造器时,按照给定的参数,对elementData进行初始化,【如果参数为0,则与无参构造器创建步骤相同】,当容量不足时,进行扩容,仍然按照当前容量的1.5倍进行扩容,将原数组的数据复制到扩容后的新数组当中。

标签:10,java,int,ArrayList,elementData,add,源码,public
From: https://www.cnblogs.com/zwgitOne123/p/17017743.html

相关文章

  • nacos注册中心单节点ap架构源码解析
    一、注册流程单nacos节点流程图如下:流程图可以知,Nacos注册流程包括客户端的服务注册、服务实例列表拉取、定时心跳任务;以及服务端的定时检查服务实例任务、服务实例更新......
  • JavaScript(JS基础、变量)
    编程语言编程概念:让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。编程语言:机器语言汇编语言高级语言:C、C++、Java、C#等一、JavaScript1......
  • drf快速使用 CBV源码分析 drf之APIView分析 drf之Request对象分析
    目录序列化和反序列化drf介绍和安装使用原生django写接口djangoDRF安装drf快速使用模型序列化类视图路由datagrip使用postman测试接口CBV源码分析drf之APIView分析View类......
  • java基础语法2
    java基础语法2运算符算术运算符:+-*/%++--赋值运算符:=关系运算符:>,>,>=,<=,==,!=,instanceof逻辑运算符:&&,||,!位运算符:&,|,^,~,>>,<<,>>>......
  • 使用 JavaScript 检测用户是否在线
    有时你可能希望增强你的应用程序以通知用户他们可能已经失去了互联网连接。用户可能正在访问你的网站并收到缓存版本,因此通常看起来他们的互联网仍在工作。然而,他们失去了......
  • 基于Java+SpringBoot+vue等疫情期间在线网课管理系统详细设计实现
    目录​​一、前言介绍:​​​​1.1背景及意义      ​​​​1.2系统运行环境​​​​二、系统设计:​​​​2.1 系统架构设计​​​​2.2角色功能图​​​​2.3 登......
  • 第119篇: JavaScript 类
    好家伙,我们先来复习一下 关于Java,类的三大特征:1、封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏......
  • Java数据类型及数据类型转换
    数据类型1、基本类型(PrimitiveType)(1)数值类型:整数类型:byte:占1个字节范围:-128-127short:占2个字节范围:-32768-32767int:占4个字节范围:-2147483648-2147483647long:占......
  • 快来领取你的JavaScript正则表达式速查表
    如果我们想对字符串进行相关(增、删、改、查、检索)操作,就可以用接下来的正则表达式实现 什么是正则表达式正则表达式是用于匹配字符串中字符组合的模式正则表达式通......
  • JAVA经典算法分析
      算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。算法(Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中,算......