Arrays.asList
是 Java 中的一个方法,用于将数组转换为固定大小的列表。这个方法在 java.util.Arrays
类中定义,常用于将数组转换为 List
以便使用集合框架中的其他方法。
主要特性
- 转换数组为列表:将一个数组转换为一个
List
,从而可以使用List
接口的方法。 - 固定大小:转换后的列表是固定大小的,不能增加或删除元素,但可以修改已有元素。
- 快速操作:转换后的列表只是对原数组的一个视图,没有真正创建一个新的
List
对象,因此效率很高。
import java.util.Arrays;
import java.util.List;public class Main {public static void main(String[] args) {String[] array = {"Apple", "Banana", "Cherry"};List<String> list = Arrays.asList(array);System.out.println(list); // 输出: [Apple, Banana, Cherry]}
}
修改列表中的元素
import java.util.Arrays;
import java.util.List;public class Main {public static void main(String[] args) {String[] array = {"Apple", "Banana", "Cherry"};List<String> list = Arrays.asList(array);list.set(1, "Blueberry"); // 修改第二个元素System.out.println(list); // 输出: [Apple, Blueberry, Cherry]// 数组也会被修改System.out.println(Arrays.toString(array)); // 输出: [Apple, Blueberry, Cherry]}
}
不可增加或删除元素
import java.util.Arrays;
import java.util.List;public class Main {public static void main(String[] args) {String[] array = {"Apple", "Banana", "Cherry"};List<String> list = Arrays.asList(array);// 尝试添加元素会抛出异常try {list.add("Date");} catch (UnsupportedOperationException e) {System.out.println("Cannot add elements"); // 输出: Cannot add elements}// 尝试删除元素会抛出异常try {list.remove("Banana");} catch (UnsupportedOperationException e) {System.out.println("Cannot remove elements"); // 输出: Cannot remove elements}}
}
注意事项
- 固定大小:转换后的列表不能改变大小,任何尝试添加或删除元素的操作都会抛出
UnsupportedOperationException
。 - 视图引用:
Arrays.asList
返回的列表是原数组的视图,对列表的修改会反映在数组中,反之亦然。 - 原生类型数组:对于原生类型数组(如
int[]
),需要使用包装类数组(如Integer[]
),否则会得到一个单元素列表。
数组和列表的比较
特性 | 数组 | 列表 |
---|---|---|
大小 | 固定大小 | 动态大小 |
类型安全 | 单一类型 | 泛型(类型安全) |
访问速度 | 快(直接通过索引访问) | 较慢(依赖实现类) |
内存使用 | 连续内存块 | 非连续内存块(视实现类而定) |
操作方法 | 基本操作(增删不方便) | 丰富的操作方法 |
灵活性 | 不灵活 | 非常灵活 |