Java 中的 ArrayList:初学者入门 [2022]

已发表: 2022-11-22

数组是每种编程语言中广泛使用且必不可少的数据结构,但有一个缺点——它的大小是固定的。 让我们看看 Java 中的 ArrayList 如何帮助解决这个问题。

数组可以有两种类型:静态数组或动态数组。 在 Java 等编程语言中,数组不能动态增加。 相反,数组的大小是在数组初始化期间声明的。 但是,在许多情况下,这会导致许多问题。 为了解决这个问题,Java 中使用了 ArrayLists。 当元素被推送到 ArrayList 时,数组大小会自动增加。

在本文中,您将了解 Java 中的 ArrayLists。 您将了解 Array 和 ArrayList 之间的核心区别,并了解不同类型的 ArrayList 以及如何使用它们。

数组与 ArrayList

Array 和 ArrayList 之间的主要区别在于 Array 的大小是静态的,而 ArrayList 的大小可以是动态的。 由于数组是固定的,因此遍历数组的时间比动态数组少。

它们之间还有一些差异。

  • 静态数组可以是一维或多维的,但 ArrayList 只能是一维的。
  • 数组是 Java 中可用的原始数据结构。 但是 ArrayList 是 Java 中集合框架 API 的一部分。 它建立在数组之上。
  • 您可以声明具有原始数据类型的数组。 不能在 ArrayList 中使用原始数据类型。 如果要使用原始数据类型,则需要使用该数据类型对应的包装类。

Java 中 ArrayList 的类型

ArrayLists 可以是任何类型。 但是您需要传递相应的包装器类,因为您不能在 ArrayList 中传递原始数据类型。

您可以通过传递包装类(如IntegerString )来添加简单的数据类型,如整数或字符串类型。

您还可以传入复杂类型,如 ArrayLists 的 ArrayLists、hashmaps 等。

让我们看一下在 ArrayList 中使用自定义类的示例。

 import java.util.ArrayList; class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public void getUser() { System.out.println("Name: " + name + " Age: " + age); } } class Main { public static void main(String[] args) { ArrayList<User> users = new ArrayList<>(); users.add(new User("Subha", 25)); users.add(new User("Dan", 32)); users.forEach(user -> { user.getUser(); }); } } Output: Name: Subha Age: 25 Name: Dan Age: 32

在上面的代码示例中,创建了一个User类型的 ArrayList。 您将了解有关以下示例中使用的方法的更多信息。

在 Java 中创建一个 ArrayList

您已经了解了 Java 中 ArrayList 的基础知识。 现在让我们看一下 ArrayList 的语法,然后,我们还将了解如何在 Java 代码中使用它。

 ArrayList<Type> listName = new ArrayList<>();

上面的代码片段显示了定义 ArrayList 的语法。 Type定义了 ArrayList 的类型。 例如,如果你想声明一个整数数据类型的 ArrayList,你可以传入<Integer> 。 请注意,您不能传递int ,因为它是原始数据类型。

您还需要导入java.util.ArrayList以在您的程序中使用 ArrayList。 下面是声明 ArrayList 的程序的基本示例:

 import java.util.ArrayList; class Main { public static void main(String[] args) { // Declare An ArrayList ArrayList<String> rainbow = new ArrayList<>(); System.out.println(rainbow); } } Output: []

在上面的代码中,声明了一个名为rainbowString类型的 ArrayList。

要使用 ArrayList,有多种方法可用。 让我们来看看几种方法。

add方法

ArrayList 类提供了各种方法来执行操作,例如添加或删除元素、获取值、在特定位置设置值、清除 ArrayList 等。

我们将看到的第一个方法是add方法。

add方法用于将单个项目添加到ArrayListadd的语法如下所示。

 arrayList.add(int i, Element)

现在让我们了解语法。 第一个参数i是一个可选参数,表示要添加的项目所在的索引位置。 第二个参数Element是你要添加的元素。 现在让我们来看一个例子。

 rainbow.add("Violet"); System.out.println(rainbow); Output: [Violet] rainbow.add(0, "Red"); System.out.println(rainbow); Output: [Red, Violet]

rainbow.add("Violet")将一个元素添加到 ArrayList 的末尾。 并且rainbow.add(0, "Red")将元素Red添加到 ArrayList 的索引位置0add()方法在成功插入项目时返回true

get方法

get方法用于从 ArrayList 的指定位置获取值。

 arrayList.get(int i);

上面语法中显示的i是索引位置。 例如,如果你想从索引位置1获取项目,写arrayList.get(1)

 rainbow.add("Violet"); rainbow.add(0, "Red"); String color = rainbow.get(1); System.out.println(color); Output: Violet

上面的代码将从 ArrayList rainbow返回Violet

set方法

set方法用于替换项目的值。 例如,如果您想要替换索引位置0处的项目的值,您可以编写rainbow.set(0, "Purple") ,假设您有一个名为rainbow的 ArrayList。

set方法的语法如下,

 arrayList.set(int i, Element);

其中i是索引位置, Element是新元素的值。

 rainbow.add("Violet"); System.out.println(rainbow); Output: [Violet] rainbow.add(0, "Red"); System.out.println(rainbow); Output: [Red, Violet] rainbow.set(1, "Purple"); System.out.println(rainbow); Output: [Red, Purple]

在上面的示例中,我们将两个值添加到名为rainbow的 ArrayList 中。 首先,添加元素Violet ,然后在 ArrayList 的位置0处添加项Red 。 此时,完整的 ArrayList 看起来像这样[Red, Violet]

现在,使用set方法将索引位置1处的元素替换为值Purple 。 替换值后,ArrayList 将如下所示[Red, Purple]

remove方法

ArrayList remove方法用于从 ArrayList 中删除一个值。 您可以传递值或要删除的值的索引位置。 remove方法的语法如下所示:

 arrayList.remove(Object value); // or arrayList.remove(int i);

让我们举个例子来更好地理解该方法。 假设您有一个名为rainbow的 ArrayList,其值为[Violet, Red, Green] 。 现在,如果你想从 ArrayList 中移除Red ,你可以写rainbow.remove("Red"); . 在rainbow ArrayList 上调用此方法将从中删除元素Red

 // rainbow = [Violet, Red, Green] rainbow.remove("Red"); System.out.println(rainbow); Output: [Violet, Green]

您还可以传递索引位置以删除索引位置的项目。

 //rainbow = [Red, Green] rainbow.remove(0); // Remove item at index position 0 System.out.println(rainbow); Output: [Green]

clear的方法

顾名思义, clear方法从 ArrayList 中删除所有元素。 语法很简单,并且不带任何参数。

 arraylist.clear()

让我们看一个例子,

 rainbow.clear(); System.out.println(rainbow); Output: []

clear方法不返回任何值。 相反,它会清除给定 ArrayList 的值。

size方法

size方法返回给定 ArrayList 的大小。 此方法也不采用任何参数。 语法如下所示。

 arrayList.size();

这里的arrayList就是ArrayList的名字。 让我们借助一个例子来理解size方法。

 ArrayList<String> rainbow = new ArrayList<>(); rainbow.add("Violet"); rainbow.add("Red"); rainbow.add("Green"); System.out.println(rainbow.size()); Output: 3

此方法返回 ArrayList 大小的值。 在上面的示例中,ArrayList rainbow由三个值组成,因此size方法返回 3。

结论

本文讨论了什么是 ArrayList 以及它与 Array 的区别。 我们还看到了如何使用 ArrayList 类可用的各种方法来声明和使用 ArrayList。

如果您想更深入地学习 Java,请查看这些在线 Java 课程。