ConcurrentModificationException (Java)

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

Esse é o erro que recebo.

Meu método se parece com

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();
            }
        }
    }
} 

Então, o que eu entendo é que isso significa que estou alterando o tamanho do iterador antes que ele termine e esse é o erro que você recebe. Isso ocorre porque um dos reactStateChange é para um objeto ser removido do hashMap. Como faço isso com segurança, para que, ao remover algo, o Iterator saiba com antecedência, para evitar esse erro. Desde já, obrigado. Se mais detalhes forem necessários, ficarei feliz em atender às suas solicitações.

questionAnswers(3)

yourAnswerToTheQuestion