Jehan Jaleel wrote:1 is that how come this sometimes works fine
This problem only occurs when using the Iterator and modifying the collection together. If you stop iterating immediately after you've modified the collection, that's just fine.
2 is that I need modify the collection itself. Because later on in the code I am doing something with that collection.
That's just fine because you're not iterating over it anymore.
Can I re-initialize the collection from the Iterator if I do the remove from the latter?
If you remove using the Iterator, the element is actually removed from collection immediately. You don't need to "re-initialize" or "synchronize".