Java 中的 ArrayList
表示可调整大小的对象列表。 我们可以在此列表中添加,删除,查找,排序和替换元素。 ArrayList
是 Java 的集合框架的一部分,并实现 Java 的List
接口。
ArrayList
类的层次结构
Java ArrayList
类扩展了实现List
接口的AbstractList
类。 List
接口以分层顺序扩展了Collection
和Iterable
接口。
ArrayList 层次结构
1. ArrayList
特性
ArrayList
具有以下特性:
- 有序 –
ArrayList
中的元素保留其顺序,默认情况下是其添加到列表的顺序。 - 基于索引 – 可以使用索引位置随机访问元素。 索引以
'0'
开头。 - 动态调整大小 – 当需要添加的元素数量超过当前大小时,
ArrayList
动态增长。 - 不同步 – 默认情况下,
ArrayList
不同步。 程序员需要适本地使用synchronized
关键字,或简单地使用Vector
类。 - 允许重复 – 我们可以在
ArrayList
中添加重复元素。 不能成组放置。
2. ArrayList
的内部工作
ArrayList
类是围绕后备数组实现的。 从arraylist
添加或删除的元素实际上是在此后备数组中修改的。 所有arraylist
方法都访问此数组并获取/设置数组中的元素。
ArrayList
基本上可以看作是 Java 中可调整大小的数组实现。
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess,
Cloneable, java.io.Serializable
{
transient Object[] elementData; //backing array
private int size; //array or list size
//more code
}
3. ArrayList
示例
3.1 创建ArrayList
通常,我们将创建一个空列表并向其中添加元素。 或者,我们将使用另一个现有集合创建一个arraylist
。
//Empty arraylist
List<String> names = new ArrayList<>();
//Arraylist initialized with another collection
List<Integer> numbers = new ArrayList<>(Arrays.asList(1,2,3,4,5));
3.2 添加和删除元素
使用add()
,set()
和remove()
方法添加或更新列表中的元素。
//Create arraylist
List<String> names = new ArrayList<>();
names.add("lokesh"); //[lokesh]
names.add("alex"); //[lokesh, alex]
names.set(1, "brian"); //[lokesh, brian]
names.remove(1); //[lokesh]
3.2 迭代
使用iterator()
或listIterator()
获取迭代器实例的引用。 该迭代器可用于迭代arraylist
中的元素。
ArrayList<Integer> digits = new ArrayList<>(Arrays.asList(1,2,3,4,5,6));
Iterator<Integer> iterator = digits.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
程序输出。
1
2
3
4
5
6
4. ArrayList
方法
ArrayList clone()
– 如何克隆ArrayList
5. Java ArrayList
示例
5.1 创建ArrayList
5.2 添加元素并删除元素
5.3 排序ArrayList
使用Collections.sort())
方法对ArrayList
排序的对象
5.4 获取/搜索
检查 ArrayList 中是否存在元素
6. Java ArrayList
上的其他教程
7. 转换
8. 差异
参考文献: