数据结构ArrayList

发布于:2023-09-15 ⋅ 阅读:(121) ⋅ 点赞:(0)

1.ArrayList的简介

在这里插入图片描述
在这里插入图片描述

  1. ***ArrayList是以泛型方式实现的,使用时必须要先实例化
  2. ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问
  3. ArrayList实现了Cloneable接口,表明ArrayList是可以clone的
  4. ArrayList实现了Serializable接口,表明ArrayList是支持序列化的
  5. 和Vector不同,ArrayList不是线程安全的,在单线程下可以使用,在多线程中可以选择Vector
  6. ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表***

2.ArrayList的使用

在这里插入图片描述
在这里插入图片描述

3.ArrayList的构造

在这里插入图片描述
在这里插入图片描述

4.ArrayList常见操作

在这里插入图片描述
在这里插入图片描述

5.ArraList的遍历

5.1 普通for循环

在这里插入图片描述

5.2 增强for循环

在这里插入图片描述

5.3 迭代器循环

在这里插入图片描述

6.ArrayList的扩容机制

在这里插入代码片
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
private void grow(int minCapacity) {
// 获取旧空间大小
int oldCapacity = elementData.length;
// 预计按照1.5倍方式扩容
int newCapacity = oldCapacity + (oldCapacity >> 1);
// 如果用户需要扩容大小 超过 原空间1.5倍,按照用户所需大小扩容
if (newCapacity - minCapacity < 0)newCapacity = minCapacity;
// 如果需要扩容大小超过MAX_ARRAY_SIZE,重新计算容量大小
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
// 调用copyOf扩容
elementData = Arrays.copyOf(elementData, newCapacity);
}
private static int hugeCapacity(int minCapacity) {
// 如果minCapacity小于0,抛出OutOfMemoryError异常
if (minCapacity < 0)
throw new OutOfMemoryError();
return (minCapacity > MAX_ARRAY_SIZE) ? Integer.MAX_VALUE : MAX_ARRAY_SIZE;
}

网站公告

今日签到

点亮在社区的每一天
去签到