UnsupportedOperationException - 这个集合不支持removeAll方法(Java Collections)

15
Set<Badge> availableBadges = myService.getAvailableBadges();
List<Badge> allBadges = Arrays.asList(Badge.values());
allBadges.removeAll(availableBadges);
/* Badge is an enumn */

有哪些集合支持removeAll操作?

2个回答

36

Arrays.asList 返回 List 接口的部分不可修改实现(在 remove* 方法的一部分中 - 感谢 @LouisWasserman 的备注)。

编辑 1:对其使用 ArrayList 包装器:new ArrayList<Badge>(allBadges);


4
Arrays.asList 方法并不完全是不可修改的;它支持 set 操作,但不支持 removeadd 操作。 - Louis Wasserman

3

你的收集可能是不可修改的。

你需要创建一个新的列表。

List<T> list = new ArrayList<>(unmodifiableList);

现在您的列表是可修改的,您可以执行删除和removeAll操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接