详解Java ArrayList

打印 上一主题 下一主题

主题 925|帖子 925|积分 2775

ArrayList简介

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


  • List:表明是列表数据结构,可以通过下标对元素进行添加删除或查找。
  • Serializable:表示可以进行序列化和反序列化操作,可以把对象与字节流相互转换。
  • RandomAccess:有这个接口标记的List表示可以支持快速随机访问,即通过元素下标可以直接得到元素内容。
  • Cloneable:表示支持拷贝,可以通过浅拷贝或深拷贝来复制对象的副本。
常用方法
  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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表