A ConcurrentModificationException is always thrown by non-synchronized JVM Collection classes when you try to modify their contents while iterating through them. They do this because modifying the contents suddenly makes it impossible to be sure that iteration will continue to be accurate in a variety of ways.
There's an easy way around this that will also give you more predictable behavior in other areas. Basically, maintain a queue of "modification" objects. Whenever you want to start an update (including your iteration), you would "lock" your game class, causing add or remove events to be stored into this queue. Then, once you finish your update, you "unlock" your game, which will then perform all stored operations.