Java ArrayList

在本教程中,我们将学习 Java 中的 ArrayList 类。我们将通过示例了解 ArrayList 的不同操作和方法。

在本教程中,我们将学习 Java 中的 ArrayList 类。我们将通过示例了解 ArrayList 的不同操作和方法。

Java 集合框架的 ArrayList 类实现了可调整大小的数组的功能。它实现了 List 接口。

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

Java ArrayList 实现

Java ArrayList 与数组

在使用数组的时候,我们需要先声明数组的大小,然后才能使用。一旦声明了数组的大小,就很难更改它。

与数组不同, ArrayList 可以在我们添加或删除元素时自动调整其容量。因此, ArrayList 可以认为是一个动态数组,是一个可可以自动调整大小的数组。

创建一个 ArrayList

要使用 ArrayList ,我们需要先导入 java.util.ArrayList 包。就像前面用到的那样,我们可以按照以下方法创建 ArrayList 对象:

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

这里, Type 表示 ArrayList 中存放的元素的数据类型。例如,

// 存放整数的 arraylist
ArrayList<Integer> arrayList = new ArrayList<>();
// 存放字符串的 arraylist
ArrayList<String> arrayList = new ArrayList<>();

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

! Integerint 的包装类型,要了解更多信息,请访问Java 包装类型

示例:在 Java 中创建 ArrayList

import java.util.ArrayList;

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

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

输出

ArrayList: [Java, Python, Swift]

在上面的例子中,我们创建了一个 ArrayList 对象 languages 用来存放编程语言的名称。

我们使用了 add() 方法向 ArrayList 添加元素。我们将在本教程后面详细了解 add() 方法。

注意:我们也可以将 ArrayList 对象赋值给 List 类型的变量。这是因为 ArrayList 类实现了 List 接口。

List<String> list = new ArrayList<>();

ArrayList 的基本操作

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

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

向 ArrayList 添加元素

ArrayList 类的 add() 方法可将单个元素添加到列表。例如,

import java.util.ArrayList;

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

    // 添加元素到列表最后
    languages.add("Java");
    languages.add("C");
    languages.add("Python");
    System.out.println("ArrayList: " + languages);

    // 添加元素到列表指定的位置
    languages.add(1, "JavaScript");
    System.out.println("Updated ArrayList: " + languages);
  }
}

输出

ArrayList: [Java, C, Python]
Updated ArrayList: [Java, JavaScript, C, Python]

在上面的例子中,我们创建了一个 ArrayList 对象 languages 用来存放编程语言的名称。在这里,我们使用了 add() 向列表添加编程语言。

注意下面的语句:

languages.add(1, "JavaScript");

在这里,我们使用了索引号参数,用于指定添加新元素的位置。

我们还可以使用 addAll() 方法将一个集合的所有元素添加到 ArrayList 中。

访问 ArrayList 元素

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

import java.util.ArrayList;

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

    animals.add("Cat");
    animals.add("Dog");
    animals.add("Cow");
    System.out.println("ArrayList: " + animals);

    // 获取元素
    String str = animals.get(1);
    System.out.print("Element at index 1: " + str);
  }
}

输出

ArrayList: [Cat, Dog, Cow]
Element at index 1: Dog

在上面的例子中,我们使用了 get() 方法由参数指定的索引位置的元素。

更改 ArrayList 元素

ArrayList 类的 set() 方法可更改指定索引位置的元素。例如,

import java.util.ArrayList;

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

    // 更改索引 2 的元素
    languages.set(2, "JavaScript");
    System.out.println("Modified ArrayList: " + languages);
  }
}

输出

ArrayList: [Java, Kotlin, C++]
Modified ArrayList: [Java, Kotlin, JavaScript]

在上面的例子中,注意下面这个语句:

language.set(2, "JavaScript");

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

删除 ArrayList 元素

ArrayList 类的 remove() 从列表中删除指定的元素元素或指定索引位置的元素。例如,

import java.util.ArrayList;

public 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("Updated ArrayList: " + animals);
    System.out.println("Removed Element: " + str);
  }
}

输出

ArrayList: [Dog, Cat, Horse]
Updated ArrayList: [Dog, Cat]
Removed Element: Horse

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

此外,我们也可以通过 clear() 删除列表中的所有元素,通过 removeAll() 删除由参数指定集合中的多个元素。

ArrayList 类的方法

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

除了这些基本的方法,下表还列举了一些 ArrayList 常用的方法。

方法 说明
size() 返回 ArrayList 的长度。
sort() ArrayList 元素进行排序。
clone() 创建一个具有相同元素、大小和容量的新 ArrayList
contains() ArrayList 中搜索指定元素并返回布尔结果。
ensureCapacity() 扩容 ArrayList
isEmpty() 检查 ArrayList 是否为空。
indexOf() ArrayList 中搜索指定元素并返回该元素的索引。

遍历 ArrayList

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

import java.util.ArrayList;

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

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

输出

ArrayList: [Cow, Cat, Dog]
Accessing individual elements:
Cow, Cat, Dog,

ArrayList 转换为数组

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

import java.util.ArrayList;

public 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[] arr = new String[languages.size()];

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

    for (String item : arr) {
      System.out.print(item + ", ");
    }
  }
}

输出

ArrayList: [Java, Python, C++]
Array: Java, Python, C++,

在上面的例子中,注意下面这行代码完成了 ArrayList 到数组的转换:

languages.toArray(arr);

数组转换为 ArrayList

我们还可以使用 Arrays 工具类的 asList() 方法将数组转换为 ArrayList

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

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

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

    // 数组
    String[] arr = {"Java", "Python", "C++"};
    System.out.print("Array: ");

    // 打印数组
    System.out.print(Arrays.toString(arr));

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

输出

Array: [Java, Python, C++]
ArrayList: [Java, Python, C++]

另外,在上述程序中,我们首先创建一个 String 类型的数组 arr 。注意下面的表达式:

Arrays.asList(arr)

在这里,asList() 方法将数组转换为一个固定长度的列表,然后使用 ArrayList 构造方法转为 ArrayList 对象。

注意:我们也可以使用 Arrays.asList() 方法在一行中创建和初始化 ArrayList 。例如,

 // create and initialize arraylist
ArrayList<String> animals = new ArrayList<>(Arrays.asList("Cat", "Cow", "Dog"));

ArrayList 到字符串的转换

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

import java.util.ArrayList;

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

    languages.add("Java");
    languages.add("Python");
    languages.add("Kotlin");
    System.out.println("ArrayList: " + languages);

    String str = languages.toString();
    System.out.println("String: " + str);
  }
}

输出

ArrayList: [Java、Python、Kotlin]
String: [Java、Python、Kotlin]