0

我在下面进行了编码,我不知道出了什么问题,但是 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。

可能是一个重复的问题,但搜索了很多,dint find kind of this。请帮忙。

4

2 回答 2

1

Arrays.asListreturn Arrays.ArrayList,一个List不支持移除元素的实现。采用

List<Integer> validDates = new ArrayList<>(Arrays.asList(26,27,28,1,2,3,4));
于 2015-06-18T11:42:12.587 回答
1

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

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

试试这个:

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

validDates.removeAll(daysToBeRemoved);
于 2015-06-18T11:48:47.467 回答