ArrayList 是如何创建的? —— 源码一探究竟
2024-02-19 09:28:59
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 是一个不错的选择。