我想遍歷一個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();
}
}