Arrays.asList(array) 和 new ArrayListInteger(Arrays.asList(array)) 之间的区别

javaArrays

1个回答

写回答

FireBloodJv

2025-06-22 18:50

+ 关注

Arrays
Arrays

Arrays.asList(array)new ArrayList(Arrays.asList(array))Java中常用的两种方法来将数组转换为ArrayList。它们之间存在一些区别和使用上的注意事项。

Arrays.asList(array)方法是Arrays类中的一个静态方法,它将传入的数组转换为一个由数组元素组成的固定长度的List。这个List是Arrays类的内部类ArrayList的实例,而不是Java.util包中的ArrayList类的实例。由于这个List是固定长度的,因此它不支持对其进行添加或删除元素的操作。这意味着,通过Arrays.asList(array)方法返回的List不能调用add()、remove()等改变其长度的方法,否则会抛出UnsupportedOperationException异常。

例如,我们有一个整型数组arr,我们可以使用Arrays.asList(arr)将其转换为List类型:

Java

int[] arr = {1, 2, 3, 4, 5};

List<Integer> list = Arrays.asList(arr);

new ArrayList(Arrays.asList(array))方法则是先使用Arrays.asList(array)方法将数组转换为List,然后通过构造函数将这个List转换为Java.util包中的ArrayList类的实例。这样得到的ArrayList是可以进行添加、删除等操作的。

例如,我们有一个整型数组arr,我们可以使用new ArrayList(Arrays.asList(arr))将其转换为ArrayList类型:

Java

int[] arr = {1, 2, 3, 4, 5};

ArrayList<Integer> arrayList = new ArrayList<Integer>(Arrays.asList(arr));

使用上的注意事项

1. 当通过Arrays.asList(array)方法将数组转换为List时,不能使用其返回的List进行添加或删除元素的操作。如果需要对List进行修改,可以先将其转换为Java.util包中的ArrayList类的实例,然后再进行操作。

2. 当通过new ArrayList(Arrays.asList(array))方法将数组转换为ArrayList时,返回的ArrayList是可以进行添加、删除等操作的。

示例代码:

Java

public class ArrayToListExample {

public static void mAIn(String[] args) {

int[] arr = {1, 2, 3, 4, 5};

// 使用Arrays.asList(array)方法将数组转换为List

List<Integer> list = Arrays.asList(arr);

System.out.println("转换为List后的元素个数:" + list.size());

// 使用new ArrayList<Integer>(Arrays.asList(array))方法将数组转换为ArrayList

ArrayList<Integer> arrayList = new ArrayList<Integer>(Arrays.asList(arr));

System.out.println("转换为ArrayList后的元素个数:" + arrayList.size());

// 尝试对Arrays.asList(array)方法返回的List进行添加和删除操作

try {

list.add(6); // 抛出UnsupportedOperationException异常

} catch (UnsupportedOperationException e) {

System.out.println("对Arrays.asList(array)方法返回的List进行添加操作时抛出异常:" + e.getMessage());

}

try {

list.remove(0); // 抛出UnsupportedOperationException异常

} catch (UnsupportedOperationException e) {

System.out.println("对Arrays.asList(array)方法返回的List进行删除操作时抛出异常:" + e.getMessage());

}

}

}

通过本文的介绍,我们了解到了Arrays.asList(array)和new ArrayList(Arrays.asList(array))之间的区别和使用上的注意事项。Arrays.asList(array)方法返回的List是固定长度的,不支持添加和删除操作;而new ArrayList(Arrays.asList(array))方法返回的ArrayList是可以进行添加和删除操作的。在实际使用中,我们根据需求选择适合的方法来转换数组为List或ArrayList。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号