Let's say I have a Set of Integers, and I want to increment every Integer in the Set. How would I do this?
Am I allowed to add and remove elements from the set while iterating it?
Would I need to create a new set that I would "copy and modify" the elements into, while I'm iterating the original set?
EDIT: What if the elements of the set are immutable?
You can safely remove from a set during iteration with an Iterator object; attempting to modify a set through its API while iterating will break the iterator. the Set class provides an iterator through getIterator().
however, Integer objects are immutable; my strategy would be to iterate through the set and for each Integer i, add i+1 to some new temporary set. When you are finished iterating, remove all the elements from the original set and add all the elements of the new temporary set.
Set<Integer> s; //contains your Integers
...
Set<Integer> temp = new Set<Integer>();
for(Integer i : s)
temp.add(i+1);
s.clear();
s.addAll(temp);