我已编码如下,我知道有什么问题,但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找到了这个。请帮忙。
答案 0 :(得分:1)
Arrays.asList
返回Arrays.ArrayList
,这是一个不支持删除元素的List
实现。使用
List<Integer> validDates = new ArrayList<>(Arrays.asList(26,27,28,1,2,3,4));
答案 1 :(得分: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);