Arrays.asList()
返回的是一个固定大小的列表。如果你尝试使用该列表进行添加、删除等修改操作,会抛出 UnsupportedOperationException
异常。这是因为 Arrays.asList()
返回的列表背后是一个数组,它的大小是固定的,不能进行动态修改。
解决方法
使用 ArrayList
包装 Arrays.asList()
的结果
如果你需要修改返回的列表(如添加、删除元素),可以将 Arrays.asList()
返回的列表传递给一个新的 ArrayList
实例。这样你就可以自由地对列表进行操作了。
import java.util.*;
public class Main {
public static void main(String[] args) {
String[] arr = {"a", "b", "c"};
List<String> list = new ArrayList<>(Arrays.asList(arr)); // 创建一个新的 ArrayList
list.add("d"); // 可以正常修改
System.out.println(list); // 输出 [a, b, c, d]
}
}
这里,Arrays.asList()
返回的列表是固定大小的,但通过 new ArrayList<>(Arrays.asList(arr))
创建了一个可变的 ArrayList
,可以自由添加元素。
检查是否进行不支持的操作
确保你没有尝试对由 Arrays.asList()
返回的列表进行不支持的操作。例如,调用 add()
或 remove()
等方法会抛出异常。解决方法是使用 ArrayList
或 LinkedList
。
示例代码:
错误示例:
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList("a", "b", "c");
list.add("d"); // 会抛出 UnsupportedOperationException
}
}
正确示例:
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
list.add("d"); // 正常添加元素
System.out.println(list); // 输出 [a, b, c, d]
}
}
通过这种方式,你就可以解决 Arrays.asList()
引发的 UnsupportedOperationException
错误,灵活操作列表。
发布者:myrgd,转载请注明出处:https://www.object-c.cn/5033