我有一个带有值的映射,然后在该映射上循环并根据当前从循环中检索到的元素删除特定元素。
由于我没有删除循环中当前正在查看的元素,因此无法使用iter.remove();
。问题不是重复使用'iter.remove();'因为我没有删除当前循环的元素。
以下是我的问题的一个简单示例:
SortedMap<List<Integer>, Integer> units = new TreeMap<>;
units.put(Arrays.asList(new Integer[] {0,0}), 1);
units.put(Arrays.asList(new Integer[] {0,1}), 2);
units.put(Arrays.asList(new Integer[] {2,1}), 3);
units.put(Arrays.asList(new Integer[] {3,4}), 5);
for (List<Integer> key : units.keySet()) {
units.remove(Arrays.asList(new Integer[] {2,1}));
}
哪个抛出
java.util.ConcurrentModificationException
这很有意义,我只是不知道如何避免。