Exception in thread "main" java.util.ConcurrentModificationException
Squash the PC dirties the room Violet. The room's state is now dirty
Lily the animal growls
The Animal Lily left the room and goes to Green through the west door.
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
at java.util.HashMap$KeyIterator.next(HashMap.java:828)
at homework5.Room.critReactRoomStateChange(Room.java:76)
at homework5.PC.play(PC.java:121)
at homework5.Main.main(Main.java:41)
Java Result: 1
Это ошибка, которую я получаю.
Мой метод выглядит как
public void critReactRoomStateChange(String command, PC pc) {
Creature temp = null;
Iterator iterator = getCreatures().keySet().iterator();
while (iterator.hasNext()) {
String names = iterator.next().toString();
if (!(getCreatures().get(names) instanceof PC)) {
temp = getCreatures().get(names);
if (temp != null) {
temp.reactStateChange(command, pc);
temp.checkNewRoom();
}
}
}
}
Итак, я понимаю, что это означает, что я изменяю размер итератора до его завершения, и это ошибка, которую вы получаете. Это верно, так как один из responseStateChange предназначен для удаления объекта из hashMap. Как сделать это безопасно, чтобы, когда я что-то удалял, он заранее сообщал об этом итератору, чтобы я мог избежать этой ошибки. Заранее спасибо. Если понадобится больше деталей, я буду рад удовлетворить ваши запросы.