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 可以存储不同数据类型的值。