不支持的操作异常 - 此集合不支持 removeAll 方法(Java 集合)

2022-09-03 09:26:35
Set<Badge> availableBadges = myService.getAvailableBadges();
List<Badge> allBadges = Arrays.asList(Badge.values());
allBadges.removeAll(availableBadges);
/* Badge is an enumn */

支持哪些集合全部删除?


答案 1

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

编辑1:在其上使用包装器:ArrayListnew ArrayList<Badge>(allBadges);


答案 2

您的收藏可能是不可修改的。

您需要创建新列表

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

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