我想遍历一个Multimap,并根据任意检查删除一些键和它们的值。Java番石榴:迭代和删除Multimap的键
Multimap<Integer, Character> myMultimap = ArrayListMultimap.create();
myMultimap.keySet().stream().forEach((bin) -> {
if (random.nextDouble() < p) {
myMultimap.removeAll(bin);
}
});
这显然会引发ConcurrentModificationException异常。
所以,我想:
Iterator<Integer> i = myMultimap.keySet().iterator();
while (i.hasNext()) {
if (random.nextDouble() < p) {
i.remove();
}
}
然而,这导致java.lang.IllegalStateException:下一个()自上次调用以去除未()的调用。 我试图像下面的代码一样玩弄它,但是在几次迭代之后,我仍然得到相同的错误。
Iterator<Integer> i = myMultimap.keySet().iterator();
while (i.hasNext()) {
if (random.nextDouble() < p) {
i.remove();
i.next();
} else {
i.next();
}
}