Java 中 List 和 ArrayList 的区别


Java 中的集合框架包含一组类和接口,有助于实现各种数据结构。List 和 ArrayList 属于此集合框架。List 是一个接口,而 ArrayList 是一个类。它们的主要目标是创建列表数据结构。List 是一个有序元素的集合,使用索引的概念进行排列。数组使用动态数组的概念来存储元素。

什么是 Java 中的 List?

List 是集合框架中的一个接口。它以有序的方式存储对象。这里,元素是按顺序存储的。List 允许存储重复的值。在 List 中,元素的插入、删除、更新和搜索操作是使用基于索引的方法进行的。因为它保留了存储元素的索引,所以很容易访问它们。

您可以使用 java.util 包的帮助下使用 List 接口。List 接口可以由 LinkedList、ArrayList、vector、stack 等类实现。这些类用于在 Java 中实现列表的概念。ListIterator 类也基于此 List,使我们能够遍历列表。此接口的实例是使用这些类创建的。

列表中的每个元素都有一个索引。使用此索引,可以轻松访问该元素。元素的索引从零开始。除了继承自集合框架的方法外,List 还有自己的方法。它们是“add (int, E)”和“addAll (int, collection)”。这些方法用于根据其索引将元素添加到列表中。它还具有 get()、set() 和 sublist() 方法,用于访问元素、设置值以及创建给定列表的子列表。

什么是 Java 中的 ArrayList?

ArrayList 是一个扩展抽象类,它实现了 List 接口。ArrayList 类似于数组,不同之处在于,当向其中添加或删除元素时,其大小会自动增加或减少。它遵循动态数组的概念。ArrayList 可以存储相同或不同的元素。

使用 ArrayList,我们可以在任何索引处插入、更新、删除元素。ArrayList 中的插入和删除操作比 List 慢。当我们将一个新元素插入到现有的 ArrayList 中时,其下方的元素将移到下一个索引。类似地,删除一个元素会导致元素移到先前的索引,这是一个耗时的过程。

ArrayList 最适合搜索操作。它可以更快地获取结果。它的索引也从零开始。

ArrayList 具有执行各种操作的方法。其中一些是 -

  • add() - 用于将元素添加到 ArrayList 中

  • get() - 用于访问元素

  • set() - 用于修改现有元素

  • remove() - 用于从 ArrayList 中删除或移除元素

  • clear() - 用于清除 ArrayList 中的所有元素

以下是一些使用 ArrayList 的优点 -

  • ArrayList 具有动态大小。它们会根据输入的元素自动增加或减少其大小。

  • ArrayList 可以存储空元素。它们也允许重复值。

  • 可以从特定索引插入或删除元素。

  • 我们可以轻松地从所需的索引访问元素

  • ArrayList 可以存储多种数据类型。

  • ArrayList 提供了各种方法来操作其中存在的元素。可以向前和向后访问元素

以下是使用 ArrayList 的一些缺点 -

  • 在 ArrayList 中插入或删除元素是一个缓慢的过程,因为它涉及到其中数据的完全移位

  • ArrayList 不能保存诸如 int、float 等原始数据类型。它们只能保存对象类型

差异:Java 中的 List 和 ArrayList

下表重点介绍了 Java 中 List 和 ArrayList 之间的主要区别 -

List

ArrayList

List 是集合框架的一个接口

ArrayList 是实现 List 接口的类之一

它扩展了集合框架

它扩展了抽象类

List 创建可以使用索引访问的元素列表

ArrayList 创建动态数组,也可以使用其索引访问

System.Collection.Generic 是 List 接口的命名空间

System.collection 是 ArrayList 的命名空间

它用于创建可以使用其索引访问的有序元素列表

它用于创建元素的动态数组

在 List 中,插入和删除操作比 ArrayList 快

在 ArrayLisst 中,插入和删除操作较慢

在 List 中,搜索速度较慢

它允许更快地搜索元素

List 无法实例化

ArrayList 可以实例化

结论

List 是集合框架的一个接口,而 ArrayList 是一个用于实现列表概念的类。ArrayList 由于其动态特性而被广泛使用。普通数组只能存储单一数据类型的值,而 ArrayList 则不然。ArrrayList 可以存储不同数据类型的值。

更新于: 2023-06-23

2K+ 次查看

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告