ToB企服应用市场:ToB评测及商务社交产业平台

标题: 详解Java ArrayList [打印本页]

作者: 科技颠覆者    时间: 2023-11-28 16:11
标题: 详解Java ArrayList
ArrayList简介

ArrayList是List接口的实现类,底层基于数组实现,容量可根据需要动态增加,相当于动态数组。ArrayList继承于AbstractList,并且还实现了Cloneable、Serializable、RandomAccess接口。

常用方法
  1. public class ArrayListTest {
  2.     public static void main(String[] args) {
  3.         ArrayList<Integer> arrayList = new ArrayList<>();
  4.         arrayList.add(1); //添加元素
  5.         arrayList.add(2);
  6.         arrayList.add(3);
  7.         arrayList.add(4);
  8.         //在指定下标处插入元素
  9.         arrayList.add(4, 5);
  10.         //获取ArrayList大小
  11.         System.out.println(arrayList.size()); //输出5
  12.         //获取指定下标的元素
  13.         System.out.println(arrayList.get(4)); //输出5
  14.         //移除指定下标的元素
  15.         arrayList.remove(0);
  16.         //判断ArrayList内是否有指定元素
  17.         System.out.println(arrayList.contains(5)); //输出true
  18.         //修改指定下标的元素值
  19.         arrayList.set(0, 9);
  20.         System.out.println(arrayList.get(1)); //输出3
  21.     }
  22. }
复制代码
ArrayList核心源码分析

类属性
  1. public class ArrayList<E> extends AbstractList<E>
  2.         implements List<E>, RandomAccess, Cloneable, java.io.Serializable
  3. {
  4.         //序列号版本号
  5.     @java.io.Serial
  6.     private static final long serialVersionUID = 8683452581122892189L;
  7.         //默认初始容量
  8.     private static final int DEFAULT_CAPACITY = 10;
  9.         //空数组,指定默认初始化容量为0时赋值给elementData,避免了重复创建空数组
  10.     private static final Object[] EMPTY_ELEMENTDATA = {};
  11.         //当调用无参构造方法时,赋值给elementData,主要用于在添加第一个元素前,标记该ArrayList是由无参构造器创建,便于将容量初始化为DEFAULT_CAPACITY,避免了重复创建空数组
  12.     private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
  13.     //实际存放元素的数组
  14.     transient Object[] elementData; // non-private to simplify nested class access
  15.     //ArrayList的元素个数
  16.     private int size;
  17. }
复制代码
构造方法

[code]//无参构造器,最开始创建的是空数组,当添加第一个元素时初始化容量为10。public ArrayList() {        this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;}//指定初始化容量,为0的话则创建空数组。public ArrayList(int initialCapacity) {        if (initialCapacity > 0) {                this.elementData = new Object[initialCapacity];        } else if (initialCapacity == 0) {                this.elementData = EMPTY_ELEMENTDATA;        } else {                throw new IllegalArgumentException("Illegal Capacity: "+                                                                                   initialCapacity);        }}//传入一个集合,将该集合中的元素存到ArrayList中。public ArrayList(Collection




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4