gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 11:39:01 25 4
gpt4 key购买 nike

我有一个 Collection c1<MyClass>和一个数组 a<MyClass> .我正在尝试将数组转换为集合 c2c1.removeAll(c2) , 但是这会抛出 UnsupportedOperationException .我发现 asList()数组类返回 Arrays.ArrayList类和此类继承removeAll()来自 AbstractList()其实现抛出UnsupportedOperationException .

    Myclass la[] = getMyClass();
Collection c = Arrays.asList(la);
c.removeAll(thisAllreadyExistingMyClass);

有什么办法可以去掉元素吗?请帮忙

最佳答案

Arrays.asList 返回一个围绕数组的 List 包装器。此包装器具有固定大小并由数组直接支持,因此对 set 的调用将修改数组,并且任何其他修改列表的方法将抛出 UnsupportedOperationException

要解决此问题,您必须通过复制包装列表的内容来创建一个新的可修改列表。这很容易通过使用带有 CollectionArrayList 构造函数来实现:

Collection c = new ArrayList(Arrays.asList(la));

关于java - Arrays.asList() 创建的 List 上的 remove() 抛出 UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7885573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com