尝试从另一个列表中删除项目列表时出现 UnsupportedOperationException

UnsupportedOperationException when trying to remove a list of items from another list

我在下面编写了代码,我不知道出了什么问题,但是 validDatesIterator.remove() 给我 UnsupportedOperationException 异常。使用 java 1.6

List<Integer> validDates = Arrays.asList(26,27,28,1,2,3,4);
    List<Integer> daysToBeRemoved = Arrays.asList(1,2); 
    Iterator<Integer> validDatesIterator = validDates.listIterator();
    while(validDatesIterator.hasNext()) {
        Integer curValue = validDatesIterator.next();
        for(Integer dayToRemove:daysToBeRemoved) {
            if(curValue.equals(dayToRemove)) {
                validDatesIterator.remove();
                break;
            }
        }
    }

此外,当我调试有效日期时(curValue 最初给出 27,而不是 26)从元素 27 而不是 26 开始。

可能是一个重复的问题,但搜索了很多,还是找到了这个。请帮忙。

Arrays.asList returns Arrays.ArrayList,不支持删除元素的 List 实现。使用

List<Integer> validDates = new ArrayList<>(Arrays.asList(26,27,28,1,2,3,4));

第一个问题:Arrays.asList() returns 一个(基本上)不可修改的列表。将其传递给普通列表的构造函数。

第二个问题:你又重新发明了轮子

试试这个:

List<Integer> validDates = new ArrayList<>(Arrays.asList(26,27,28,1,2,3,4));
List<Integer> daysToBeRemoved = Arrays.asList(1,2);

validDates.removeAll(daysToBeRemoved);