我有一个集合c1<MyClass>和一个数组a<MyClass>。我试图将数组转换为集合c2并执行操作c1.removeAll(c2),但这会抛出异常UnsupportedOperationException。我发现,asList()Arrays类收益Arrays.ArrayList类和这个类继承removeAll()自AbstractList()其实现抛出UnsupportedOperationException。
c1<MyClass>
a<MyClass>
c1.removeAll(c2)
UnsupportedOperationException
asList()Arrays
Arrays.ArrayList
removeAll()
AbstractList()
Myclass la[] = getMyClass(); Collection c = Arrays.asList(la); c.removeAll(thisAllreadyExistingMyClass);
有什么办法可以删除元素?请帮忙
Arrays.asList返回List数组的包装器。此包装具有固定的大小,并直接由数组支持,因此对的调用set将修改数组,而修改列表的任何其他方法都将引发UnsupportedOperationException。
Arrays.asList
List
set
要解决此问题,你必须通过复制包装器列表的内容来创建新的可修改列表。通过使用ArrayList带有的构造函数,这很容易做到Collection:
Collection c = new ArrayList(Arrays.asList(la));