
Arrays
使用Arrays.asList()方法创建的List上的remove()方法会抛出UnsupportedOperationException异常。这是因为Arrays.asList()方法返回的是一个固定大小的List,其底层实现是一个数组,不能进行增删操作。
案例代码:Javaimport 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对象进行增删操作。下面是一个示例代码:Javaimport 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对象进行增删操作。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号