Java 集合中 ​​Arrays.asList​ 详解

时间:2025-04-23 15:53:01

Arrays.asList() 是 Java 中一个非常有用的方法,它将数组转换成一个 固定大小的列表。这个方法位于 java.util.Arrays 类中,返回一个 List,它可以像普通的 List 一样进行操作,但注意它的大小是固定的。

方法签名:

public static <T> List<T> asList(T... a)

参数:

  • T... a:可变参数,代表任意类型的元素,可以是任何类型的数组(如:String[]Integer[] 等)。

返回值:

  • 返回一个 List,其中包含了传入数组中的元素。这个 List 是由原始数组支持的,因此对 List 元素的修改也会直接影响到原始数组,但不能调整 List 的大小(即不能进行添加或删除操作)。

例子 1: 将数组转换为 List

import java.util.*;

public class Main {
    public static void main(String[] args) {
        // 创建一个字符串数组
        String[] fruits = {"Apple", "Banana", "Cherry"};

        // 使用 Arrays.asList() 将数组转换为列表
        List<String> fruitList = Arrays.asList(fruits);

        // 打印转换后的列表
        System.out.println(fruitList); // 输出: [Apple, Banana, Cherry]
    }
}

解释:

  • Arrays.asList(fruits) 将字符串数组 fruits 转换成了一个 List。这个 List 包含了数组中的所有元素。

例子 2: 使用 Arrays.asList() 转换不同类型的数组

import java.util.*;

public class Main {
    public static void main(String[] args) {
        // 整数数组
        Integer[] numbers = {1, 2, 3, 4, 5};

        // 将数组转换为 List
        List<Integer> numberList = Arrays.asList(numbers);
        System.out.println(numberList); // 输出: [1, 2, 3, 4, 5]
    }
}

解释:

  • 对于任意类型的数组(如 Integer[]),Arrays.asList() 会将其转换为一个包含这些元素的 List

例子 3: 修改 List 元素反映到原始数组

import java.util.*;

public class Main {
    public static void main(String[] args) {
        // 创建一个整数数组
        Integer[] numbers = {10, 20, 30};

        // 将数组转换为列表
        List<Integer> numberList = Arrays.asList(numbers);

        // 修改列表中的元素
        numberList.set(1, 100);

        // 打印列表和数组
        System.out.println("List: " + numberList);  // 输出: List: [10, 100, 30]
        System.out.println("Array: " + Arrays.toString(numbers)); // 输出: Array: [10, 100, 30]
    }
}

解释:

  • 因为 Arrays.asList() 返回的 List 依赖于原始数组,所以对 List 的修改会直接影响到原始数组。在上面的例子中,我们修改了 List 中索引为 1 的元素,也同时修改了数组中的相应元素。

例子 4: 不能添加或删除元素

import java.util.*;

public class Main {
    public static void main(String[] args) {
        // 创建一个字符串数组
        String[] colors = {"Red", "Green", "Blue"};

        // 将数组转换为列表
        List<String> colorList = Arrays.asList(colors);

        // 尝试向列表中添加元素
        // colorList.add("Yellow"); // 这会抛出 UnsupportedOperationException

        // 输出列表
        System.out.println(colorList); // 输出: [Red, Green, Blue]
    }
}

解释:

  • 固定大小的列表:虽然 Arrays.asList() 返回的 List 可以访问和修改元素,但是它的大小是固定的,无法进行 add()remove() 操作。如果尝试添加或删除元素,将抛出 UnsupportedOperationException

总结:

  • Arrays.asList() 是一个很有用的方法,用于将数组转换为 List
  • 转换后的 List 具有 固定大小,不能进行元素的添加或删除。
  • 它提供了 直接访问数组元素 的能力,修改 List 中的元素会影响到原始数组。
  • 适用于需要将数组转换为 List 并在不改变大小的情况下访问或修改元素的场景。