跳到主要内容

Java ArrayList

提示
  1. ArrayList的特点和应用:Java中的ArrayList是一个可调整大小的动态数组,与固定大小的普通数组不同。它实现了List接口,支持自动调整容量,适用于存储和处理不定量数据。
  2. ArrayList的基本操作ArrayList提供了添加、访问、修改、移除元素等基本操作。这些操作通过如add(), get(), set(), remove()等方法实现。
  3. ArrayList的高级功能:除了基本操作,ArrayList还支持如addAll(), clear(), contains(), indexOf(), iterator()等高级功能。它支持迭代器访问,可以方便地转换成数组或字符串,实现数据的灵活处理。

在 Java 中,我们使用 ArrayList 类来实现 可调整大小的数组 功能。

它实现了集合框架的 List 接口。

List 接口扩展了 Collection 接口,而 ArrayList 类实现了 List。

Java ArrayList 与 Array 的比较

在 Java 中,我们需要在使用数组之前声明数组的大小。一旦声明了数组的大小,就很难改变它。

为了处理这个问题,我们可以使用 ArrayList 类。它允许我们创建可调整大小的数组。

与数组不同,当我们向 ArrayList 中添加或移除元素时,它们可以自动调整容量。因此,ArrayList 也被称为 动态数组

创建 ArrayList

在使用 ArrayList 之前,我们首先需要导入 java.util.ArrayList 包。以下是我们在 Java 中创建 ArrayList 的方法:

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

这里的 Type 表示 ArrayList 的类型。例如,

// 创建 Integer 类型的 ArrayList
ArrayList<Integer> arrayList = new ArrayList<>();

// 创建 String 类型的 ArrayList
ArrayList<String> arrayList = new ArrayList<>();

在上面的程序中,我们使用了 Integer 而不是 int。这是因为在创建 ArrayList 时我们不能使用原始类型。相反,我们必须使用相应的包装类。

这里的 Integerint 的对应包装类。要了解更多,请访问 Java 包装类

示例:在 Java 中创建 ArrayList

import java.util.ArrayList;

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

// 创建 ArrayList
ArrayList<String> languages = new ArrayList<>();

// 向 ArrayList 添加元素
languages.add("Java");
languages.add("Python");
languages.add("Swift");
System.out.println("ArrayList: " + languages);
}
}

输出

ArrayList: [Java, Python, Swift]

在上面的示例中,我们创建了一个名为 languagesArrayList

这里,我们使用了 add() 方法向 ArrayList 添加元素。我们将在本教程后面了解更多关于 add() 方法的信息。

ArrayList 上的基本操作

ArrayList 类提供了各种方法来对 ArrayList 进行不同的操作。我们将在本教程中看到一些常用的 ArrayList 操作:

  • 添加元素
  • 访问元素
  • 更改元素
  • 移除元素

1. 向 ArrayList 添加元素

要向 ArrayList 添加单个元素,我们使用 ArrayList 类的 add() 方法。例如,

import java.util.ArrayList;

class Main {
public static void main(String[] args){
// 创建 ArrayList
ArrayList<String> languages = new ArrayList<>();

// 不带索引参数的 add() 方法
languages.add("Java");
languages.add("C");
languages.add("Python");
System.out.println("ArrayList: " + languages);
}
}

输出

ArrayList: [Java, C, Python]

在上面的示例中,我们创建了一个名为 languagesArrayList。这里,我们使用了 add() 方法向 languages 添加元素。

要了解更多,请访问 Java ArrayList add()

向 ArrayList 添加元素的其他方式

如何在 ArrayList 的指定位置添加一个元素?

我们也可以向 add() 方法传递一个 索引号 作为额外参数,以在指定位置添加元素。例如,

// 在索引 1 添加 JavaScript
languages.add(1, "JavaScript");

// 在索引 3 添加 C++
languages.add(3, "C++");

如何将一组元素全部添加到 ArrayList 中?

我们还可以使用 addAll() 方法将集合(set,map)的所有元素添加到 ArrayList 中。例如,

import java.util.ArrayList;
import java.util.HashSet;

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

// 创建一个集合
HashSet<String> vowels = new HashSet<>();
vowels.add("a");
vowels.add("e");
vowels.add("i");

// 创建一个 ArrayList
ArrayList<String> alphabets = new ArrayList<>();

// 将集合的所有元素添加到 ArrayList
alphabets.addAll(vowels);
System.out.println("ArrayList: " + alphabets);
}
}

// 输出: ArrayList: [a, e, i]

要了解更多,请访问 Java ArrayList addAll()

2. 访问 ArrayList 元素

要从 ArrayList 中访问一个元素,我们使用 ArrayList 类的 get() 方法。例如,

import java.util.ArrayList;

class Main {
public static void main(String[] args) {
ArrayList<String> animals = new ArrayList<>();

// 在 ArrayList 中添加元素
animals.add("Cat");
animals.add("Dog");
animals.add("Cow");
System.out.println("ArrayList: " + animals);

// 从 ArrayList 获取元素
String str = animals.get(1);
System.out.print("索引 1 的元素: " + str);
}
}

输出

ArrayList: [Cat, Dog, Cow]
索引 1 的元素: Dog

在上面的示例中,我们使用了带参数 1get() 方法。这里,该方法返回 索引 1 处的元素。

要了解更多,请访问 Java ArrayList get()

我们也可以使用 iterator() 方法访问 ArrayList 的元素。要了解更多,请访问 Java ArrayList iterator()

3. 更改 ArrayList 元素

要更改 ArrayList 的元素,我们使用 ArrayList 类的 set() 方法。例如,

import java.util.ArrayList;

class Main {
public static void main(String[] args) {
ArrayList<String> languages = new ArrayList<>();

// 在数组列表中添加元素
languages.add("Java");
languages.add("Kotlin");
languages.add("C++");
System.out.println("ArrayList: " + languages);

// 更改数组列表的元素
languages.set(2, "JavaScript");
System.out.println("修改后的 ArrayList: " + languages);
}
}

输出

ArrayList: [Java, Kotlin, C++]
修改后的 ArrayList: [Java, Kotlin, JavaScript]

在上面的示例中,我们创建了一个名为 languagesArrayList。注意以下这行代码,

language.set(2, "JavaScript");

这里,set() 方法将 索引 2 处的元素更改为 JavaScript

要了解更多,请访问 Java ArrayList set()

4. 移除 ArrayList 元素

要从 ArrayList 中移除一个元素,我们可以使用 ArrayList 类的 remove() 方法。例如,

import java.util.ArrayList;

class Main {
public static void main(String[] args) {
ArrayList<String> animals = new ArrayList<>();

// 在数组列表中添加元素
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayList

: " + animals);

// 从索引 2 移除元素
String str = animals.remove(2);
System.out.println("更新后的 ArrayList: " + animals);
System.out.println("移除的元素: " + str);
}
}

输出

ArrayList: [Dog, Cat, Horse]
更新后的 ArrayList: [Dog, Cat]
移除的元素: Horse

这里,remove() 方法以 索引号 为参数,并移除由 索引号 指定的元素。

要了解更多,请访问 Java ArrayList remove()

我们也可以一次性移除 ArrayList 中的所有元素。要了解更多,请访问

ArrayList 类的方法

在前一节中,我们已经了解了 ArrayList 类的 add()get()set()remove() 方法。

除了这些基本方法,以下是一些常用的 ArrayList 方法。

方法描述
size()返回 ArrayList 的长度。
sort()对 ArrayList 元素进行排序。
clone()创建一个具有相同元素、大小和容量的新 ArrayList。
contains()搜索指定元素在 ArrayList 中是否存在,并返回布尔结果。
ensureCapacity()指定 ArrayList 可以包含的总元素数量。
isEmpty()检查 ArrayList 是否为空。
indexOf()在 ArrayList 中搜索指定元素并返回其索引。

如果您想了解所有不同的 ArrayList 方法,请访问 Java ArrayList methods

遍历 ArrayList

我们可以使用 Java for-each 循环 来遍历 ArrayList 的每个元素。例如,

import java.util.ArrayList;

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

// 创建一个数组列表
ArrayList<String> animals = new ArrayList<>();
animals.add("Cow");
animals.add("Cat");
animals.add("Dog");
System.out.println("ArrayList: " + animals);

// 使用 for-each 循环进行遍历
System.out.println("访问各个元素: ");

for (String language : animals) {
System.out.print(language);
System.out.print(", ");
}
}
}

输出

ArrayList: [Cow, Cat, Dog]
访问个别元素:
Cow, Cat, Dog,

常见问题

Java ArrayList 和 LinkedList 有什么区别?

Java 中 ArrayListLinkedList 的一些主要区别如下:

| ArrayList | LinkedList | | 实现了 List 接口| 实现了 ListQueueDeque 接口 | | 存储单个值。| 存储三个值:数据、前一个和后一个地址 | | 提供可调整大小的数组功能。| 提供双向链表的功能 |

如何将 ArrayList 转换为 Array?

我们可以使用 toArray() 方法将 ArrayList 转换为数组。例如,

import java.util.ArrayList;

class Main {
public static void main(String[] args) {
ArrayList<String> languages = new ArrayList<>();

// 在数组列表中添加元素
languages.add("Java");
languages.add("Python");
languages.add("C++");
System.out.println("ArrayList: " + languages);

// 创建一个 String 类型的新数组
String[] arr = new String[languages.size()];

// 将 ArrayList 转换为数组
languages.toArray(arr);
System.out.print("数组: ");

// 访问数组的元素
for (String item : arr) {
System.out.print(item + ", ");
}
}
}

输出

ArrayList: [Java, Python, C++]
数组: Java, Python, C++,

在上面的示例中,toArray() 方法将 languages ArrayList 转换为数组并存储在 arr 中。要了解更多,请访问 Java ArrayList toArray()

如何将数组转换为 ArrayList?

我们使用 Arrays 类的 asList() 方法。要使用 asList(),我们必须首先导入 java.util.Arrays 包。例如,

import java.util.ArrayList;
import java.util.Arrays;

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

// 创建一个 String 类型的数组
String[] arr = { "Java", "Python", "C++" };
System.out.print("数组: ");

// 打印数组
for (String str : arr) {
System.out.print(str);
System.out.print(" ");
}

// 从数组创建 ArrayList
ArrayList<String> languages = new ArrayList<>(Arrays.asList(arr));
System.out.println("\nArrayList: " + languages);
}
}

输出

数组: Java Python C++
ArrayList: [Java, Python, C++]

在上面的程序中,我们首先创建了一个 String 类型的数组 arr。请注意这个表达式,

Arrays.asList(arr)

这里,asList() 方法将数组转换为 ArrayList。

如何在一行中创建并初始化 ArrayList?

我们使用 Arrays.asList() 方法在一行中创建并初始化 ArrayList。例如,

import java.util.ArrayList;
import java.util.Arrays;

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

// 创建并初始化 ArrayList
ArrayList<String> languages = new ArrayList<>(Arrays.asList("Java", "Python", "C"));
System.out.println("ArrayList: " + languages);

}
}

// 输出: ArrayList: [Java, Python, C]

如何将 ArrayList 转换为 String?

我们使用 ArrayList 类的 toString() 方法将 ArrayList 转换为字符串。例如,

import java.util.ArrayList;

class Main {
public static void main(String[] args) {
ArrayList<String> languages = new ArrayList<>();

// 在 ArrayList 中添加元素
languages.add("Java");
languages.add("Python");
languages.add("Kotlin");
System.out.println("ArrayList: " + languages);

// 将 ArrayList 转换为字符串
String str = languages.toString();
System.out.println("字符串: " + str);
}
}

输出

ArrayList: [Java, Python, Kotlin]
字符串: [Java, Python, Kotlin]

这里,toString() 方法将整个 ArrayList 转换为一个字符串。要了解更多,请访问 Java ArrayList toString()

如何使用 List 接口创建 ArrayList?

我们还可以使用 List 接口来创建 ArrayList。这是因为 ArrayList 类实现了 List 接口。让我们看一个示例:

import java.util.ArrayList;
import java.util.List;

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

// 使用 List 创建 ArrayList
List<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("Python");
languages.add("C");

System.out.println("ArrayList: " + languages);
}
}

// 输出: ArrayList: [Java, Python, C]