在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中传递原始数据类型。
您可以通过传递包装类(如Integer
或String
)来添加简单的数据类型,如整数或字符串类型。
您还可以传递复杂类型,如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。