Arrays.asList() 创建的 List 上的 remove() 抛出 UnsupportedOperationException

javaArrays

1个回答

写回答

18758919161

2025-07-06 01:00

+ 关注

Arrays
Arrays

使用Arrays.asList()方法创建的List上的remove()方法会抛出UnsupportedOperationException异常。这是因为Arrays.asList()方法返回的是一个固定大小的List,其底层实现是一个数组,不能进行增删操作。

案例代码:

Java

import Java.util.Arrays;

import Java.util.List;

public class MAIn {

public static void mAIn(String[] args) {

// 使用Arrays.asList()创建List

List<String> list = Arrays.asList("Apple", "Banana", "Orange");

// 尝试使用remove()方法删除元素

try {

list.remove("Banana");

} catch (UnsupportedOperationException e) {

System.out.println("UnsupportedOperationException: " + e.getMessage());

}

}

}

Arrays.asList()方法创建的List的特点

Arrays.asList()方法创建的List是一个固定大小的List,其底层实现是一个数组。这意味着我们不能向该List中添加或删除元素,否则会抛出UnsupportedOperationException异常。

这种固定大小的List是由Arrays类的静态内部类ArrayList实现的,而不是Java.util.ArrayList。因此,它不具备Java.util.ArrayList的动态增删元素的能力。

为什么会抛出UnsupportedOperationException异常?

当我们调用Arrays.asList()方法时,它会将传入的参数转换为一个固定大小的List,这个List的大小是不可变的,与传入的数组大小相同。这意味着,我们不能向这个List中添加或删除元素,因为它的大小是固定的。

当我们尝试使用remove()方法删除元素时,底层实现会抛出UnsupportedOperationException异常,以提示我们这个操作是不被支持的。

如何避免UnsupportedOperationException异常?

为了避免UnsupportedOperationException异常,我们可以将Arrays.asList()方法创建的List复制到一个新的ArrayList对象中,这样就可以对新的ArrayList对象进行增删操作。

下面是一个示例代码:

Java

import Java.util.ArrayList;

import Java.util.Arrays;

import Java.util.List;

public class MAIn {

public static void mAIn(String[] args) {

// 使用Arrays.asList()创建List

List<String> list = Arrays.asList("Apple", "Banana", "Orange");

// 将List复制到一个新的ArrayList对象中

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

// 使用新的ArrayList对象进行增删操作

newList.remove("Banana");

System.out.println(newList);

}

}

在上述示例代码中,我们首先将Arrays.asList()返回的List复制到一个新的ArrayList对象newList中。然后,我们可以使用newList进行增删操作,而不会抛出UnsupportedOperationException异常。

使用Arrays.asList()方法创建的List是一个固定大小的List,不支持增删操作。当我们尝试使用remove()方法删除元素时,会抛出UnsupportedOperationException异常。为了避免这个异常,我们可以将Arrays.asList()返回的List复制到一个新的ArrayList对象中,从而可以对新的ArrayList对象进行增删操作。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号