Java - повторять Hashmap? - PullRequest
       3

Java - повторять Hashmap?

0 голосов
/ 14 октября 2011
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)

Есть идеи относительно того, почему это происходит?Когда это происходит, на карте появляется один ключ (с одним значением).

1 Ответ

1 голос
/ 14 октября 2011

Я предполагаю, что ваш 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);

Другая возможность состоит в том, что у вас есть несколько потоков?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...