在Java中的ArrayList:初学者的简介 [2023]

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

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

在本文中,您将学习有关Java中ArrayList的知识。您将了解数组和ArrayList之间的核心区别,以及不同类型的ArrayList以及如何使用它们。

数组 vs ArrayList

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

它们之间还有几个其他区别。

  • 静态数组可以是单维或多维的,而ArrayList只能是单维的。
  • 数组是Java中可用的原始数据结构。但是ArrayList是Java中Collection Framework API的一部分。它建立在数组的基础之上。
  • 您可以使用原始数据类型声明数组。原始数据类型不能在ArrayList中使用。如果要使用原始数据类型,您需要使用相应的包装类。

Java中的ArrayList类型

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

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

您还可以传递复杂类型,如ArrayList的ArrayList,哈希映射等。

让我们来看一个在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 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 listName = new ArrayList();

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

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

import java.util.ArrayList;

class Main {
  public static void main(String[] args) {

    // Declare An ArrayList
    ArrayList rainbow = new ArrayList();

    System.out.println(rainbow); 
  }
}

Output:
[]

在上面的代码中,声明了一个类型为String的名为rainbow的ArrayList。
要使用ArrayList,有多种可用的方法。让我们看一些方法。
add方法
ArrayList类提供了各种方法来执行添加或删除元素、获取值、在特定位置设置值、清除ArrayList等操作。
我们要看的第一个方法是add方法。
add方法用于向ArrayList中添加单个项目。下面是add的语法。
arrayList.add(int i, Element)
现在让我们理解一下语法。第一个参数i是一个可选参数,表示您要添加的项目的索引位置。第二个参数Element是要添加的元素。现在让我们看一个例子。
rainbow.add(“Violet”);
System.out.println(rainbow);
输出:
[Violet] rainbow.add(0, “Red”);
System.out.println(rainbow);
输出:
[Red, Violet] rainbow.add("Violet")将一个元素添加到ArrayList的末尾。而rainbow.add(0, "Red")将元素Red添加到ArrayList的索引位置0。当成功插入一个项目时,add()方法返回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);
输出:
Violet
上面的代码将从ArrayListrainbow返回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);
输出:
[Violet] rainbow.add(0, “Red”);
System.out.println(rainbow);
输出:
[Red, Violet] rainbow.set(1, “Purple”);
System.out.println(rainbow);
输出:
[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);

// 或者

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);

输出:
[Violet, Green]

你也可以传递索引位置来移除指定位置的项。

//rainbow = [Red, Green]

rainbow.remove(0); // 移除索引位置为0的项

System.out.println(rainbow);

输出:
[Green]

clear方法

顾名思义,clear方法会从ArrayList中移除所有元素。语法很简单,不需要任何参数。

arraylist.clear()

让我们来看一个例子,

rainbow.clear(); 
System.out.println(rainbow); 

输出:
[]

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

size方法

size方法返回给定ArrayList的大小。该方法也不需要任何参数。语法如下所示。

arrayList.size();

这里的arrayList是ArrayList的名称。让我们通过一个例子来理解size方法。

ArrayList rainbow = new ArrayList();
rainbow.add("Violet");
rainbow.add("Red");
rainbow.add("Green");

System.out.println(rainbow.size()); 


输出:
3

该方法返回ArrayList的大小。在上面的例子中,ArrayList rainbow 包含三个值,所以size方法返回3。

结论

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

如果你想深入学习Java,可以查看这些online Java courses

类似文章