Iterator<Player> iterator = plugin.inreview.keySet().iterator();
while (iterator.hasNext()) {
Player key = (Player) iterator.next();
chat.getRecipients().remove(key);
}
抛出:java.util.NoSuchElementException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$EntryIterator.next(Unknown Source)
at java.util.HashMap$EntryIterator.next(Unknown Source)
有关为何发生这种情况的任何想法?发生这种情况时,地图中有一个键(带有一个值)。
答案 0 :(得分:1)
我猜您的getRecipients()
会返回与plugin.inreview
相同的集合!
这意味着您在迭代时尝试从集合中删除元素。这当然很糟糕。
相反,你应该这样做
Vector toRemove=new Vector();
Iterator<Player> iterator = plugin.inreview.keySet().iterator();
while (iterator.hasNext()) {
Player key = (Player) iterator.next();
toRemove.add(key);
}
chat.getRecipients().removeAll(toRemove);
另一种可能性是你有几个线程吗?