ArrayList类
目录
- ArrayList类
- 一、构造方法摘要
- 1.1 ArrayList()
- 1.2 ArrayList(Collection c)
- 1.3 ArrayList(int initialCapacity)
- 二、 ArrayList的扩容机制:
- 2.1 源码如下:
- 2.2. 以上扩容机制的弊端:
- 三、代码案例
ArrayList类
一、构造方法摘要
1.1 ArrayList()
构造一个初始容量为 10
的空列表
。
1.2 ArrayList(Collection c)
- 构造一个
包含指定 collection 的元素
的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。 - 可以将其它集合转成List
1.3 ArrayList(int initialCapacity)
构造一个具有指定初始容量的空列表。
==================================================================
ArrayList类没有独有的方法需要掌握,都是使用List和Collection中的方法。
二、 ArrayList的扩容机制:
2.1 源码如下:
int newCapacity = oldCapacity + (oldCapacity >> 1);
新容量 = 旧容量的1.5倍·
2.2. 以上扩容机制的弊端:
每次扩容的是旧容量的1.5倍
,可能会造成空间的浪费
比如: 旧容量=10,存储11个元素,扩容=15,有4个浪费
ArrayList也不能无限扩容,最大容量= Integer.MAX_VALUE - 8
三、代码案例
import java.util.ArrayList;
import java.util.Arrays;
/*** 构造方法摘要* ArrayList()* 构造一个初始容量为 10 的空列表。* ArrayList(Collection c)* 构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。* 可以将其它集合转成List* ArrayList(int initialCapacity)* 构造一个具有指定初始容量的空列表。*** ArrayList类没有独有的方法需要掌握,都是使用List和Collection中的方法。** ArrayList的扩容机制:* int newCapacity = oldCapacity + (oldCapacity >> 1);* 新容量 = 旧容量的1.5倍** 以上扩容机制的弊端:* 每次扩容的是旧容量的1.5倍,可能会造成空间的浪费* 比如:* 旧容量=10,存储11个元素,扩容=15,有4个浪费*** ArrayList也不能无限扩容,最大容量= Integer.MAX_VALUE - 8**/
public class ArrayListDemo {public static void main(String[] args){ArrayList arrayList = new ArrayList (Arrays.asList(1,2,3,4,5));System.out.println("arrayList = " + arrayList);System.out.println("arrayList.size() = " + arrayList.size());// 构造一个初始容量为 10 的空列表。// 也就是ArrayList底层数组的长度是10ArrayList arrayList2 = new ArrayList();/** size()是集合中元素的个数;不是底层数组的长度*/System.out.println("arrayList2.size() = " + arrayList2.size());// 当元素个数超过底层数组的长度,此时ArrayList会自动扩容for (int i = 0; i < 10; i++) {arrayList2.add(i);}System.out.println("arrayList2.size() = " + arrayList2.size());arrayList2.add(100);System.out.println("arrayList2 = " + arrayList2);System.out.println("arrayList2.size() = " + arrayList2.size());}
}