返回

ArrayList 是如何创建的? —— 源码一探究竟

Android

ArrayList 源码分析

ArrayList 是 Java 集合框架中常用的数据结构,它是一种动态数组,可以根据需要自动扩容或缩容。ArrayList 的底层实现是一个数组,因此它支持快速随机访问。

创建 ArrayList

我们可以使用两种方式来创建 ArrayList:

  • 使用无参构造函数:ArrayList(),创建一个初始容量为 10 的 ArrayList。
  • 使用带参构造函数:ArrayList(int initialCapacity),创建一个指定初始容量的 ArrayList。

当我们使用无参构造函数创建 ArrayList 时,它会创建一个初始容量为 10 的 ArrayList。如果我们向这个 ArrayList 中添加元素,当达到容量上限时,ArrayList 会自动扩容,将其容量增加一倍。

当我们使用带参构造函数创建 ArrayList 时,我们可以指定 ArrayList 的初始容量。如果我们知道 ArrayList 中要存储的元素数量,我们可以使用带参构造函数来创建 ArrayList,这样可以避免 ArrayList 在添加元素时自动扩容,提高性能。

添加元素

向 ArrayList 中添加元素可以使用 add() 方法。add() 方法可以将一个元素添加到 ArrayList 的末尾。如果 ArrayList 的容量不足以容纳这个元素,ArrayList 会自动扩容,将其容量增加一倍。

访问元素

我们可以使用 get() 方法来访问 ArrayList 中的元素。get() 方法可以根据索引值获取 ArrayList 中的元素。

删除元素

我们可以使用 remove() 方法来删除 ArrayList 中的元素。remove() 方法可以根据索引值或元素值删除 ArrayList 中的元素。

ArrayList 与 LinkedList 的区别

ArrayList 和 LinkedList 都是 Java 集合框架中常用的数据结构,它们都有自己的优缺点。

ArrayList 是基于数组实现的,因此它支持快速随机访问。LinkedList 是基于链表实现的,因此它支持快速插入和删除操作。

ArrayList 的缺点是当需要插入或删除元素时,需要移动大量元素。LinkedList 的缺点是随机访问元素时,需要遍历链表,因此速度较慢。

总结

ArrayList 是 Java 集合框架中常用的数据结构,它是一种动态数组,可以根据需要自动扩容或缩容。ArrayList 的底层实现是一个数组,因此它支持快速随机访问。ArrayList 的缺点是当需要插入或删除元素时,需要移动大量元素。

如果您需要一个快速随机访问的集合,那么 ArrayList 是一个不错的选择。如果您需要一个快速插入和删除操作的集合,那么 LinkedList 是一个不错的选择。