java - UnsupportedOperationException 删除时
问题描述
我正在尝试从 ArrayList 中删除重复项。但我不断收到这个 UnsupportedOperationException
public static void removeDuplicates(List<Integer> list) {
Collections.sort(list);
for(int i = 0; i<list.size();i++) {
if(list.get(i)== list.get((i+1))) {
list.remove(i+1);
}
}
}
一件事我不能创建一个新列表并更改它,因为我不应该返回任何东西。我必须更改列表。
解决方案
在使用 for 循环对其进行迭代时,您无法删除元素。解决此问题的一种简单方法是创建一个包含原始列表元素的新 ArrayList,然后遍历原始列表,从列表副本中删除重复项,然后将其返回。
即使您可以使用 for 循环删除元素,另一件事可能是 type 的列表UnmodifiableCollection
?如果是这样,您就不能从中删除元素,这是该类的重点。再次,一个解决方案是创建一个全新的 ArrayList,它复制原始元素并删除和更改您喜欢的任何内容并将其返回给调用代码。
推荐阅读
- ios - 如何利用 PageViewController 根据用户的输入生成新的页面视图?
- php - 想使用php显示所有服务下的所有活动
- ios - Swift注释“标签”
- c++ - 为什么模板类的成员需要通过其模板类的参数来参数化
- c++ - Gdiplus Bitmap 没有 Alpha 通道
- php - 简单的 html dom 可以找到 PHP 脚本()?
- laravel - 发现错误的嵌套样式标签,然后在 laravel 中播种数据库
- angular - Angular/cli 未正确安装
- mongodb - 如何在聚合中使用_id?
- java - Spring hibernate直到最后都没有提交