首页 > 解决方案 > 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);
        }

    }

} 

一件事我不能创建一个新列表并更改它,因为我不应该返回任何东西。我必须更改列表。

标签: java

解决方案


在使用 for 循环对其进行迭代时,您无法删除元素。解决此问题的一种简单方法是创建一个包含原始列表元素的新 ArrayList,然后遍历原始列表,从列表副本中删除重复项,然后将其返回。

即使您可以使用 for 循环删除元素,另一件事可能是 type 的列表UnmodifiableCollection?如果是这样,您就不能从中删除元素,这是该类的重点。再次,一个解决方案是创建一个全新的 ArrayList,它复制原始元素并删除和更改您喜欢的任何内容并将其返回给调用代码。


推荐阅读