Arek Sokolowski wrote:'Structural modification' is a modification, which changes set (or order) of objects in the Vector.
These are all methods from add*, remove* and set* families.
In another words: it is any modification, which modifies content of Iterator.
This is incorrect. In particular, set methods do not cause structural modification, except for setLength(). You can verify this by looking at the source code for Vector and other collections - look at how the modCount variable (declared in java.util.AbstractList) is used. The methods that call modCount++ are the ones that can cause ConcurrentModificationException if called during iteration from outside the iterator. These include all add* and remove* methods, as well as ensureCapacity(), insertElementAt() (which is just an old name for add()), setSize(), and trimToSize().
Going back to the documentation though, the API tells us (under the subList() method):
Structural modifications are those that change the size of the List, or otherwise perturb it in such a fashion that iterations in progress may yield incorrect results.
The first part of this is pretty clear, and accounts for why add() and remove() are structural modifications, while set() is not. The "otherwise perturb it" section is more vague, but it appears to account for ensureCapacity() and trimToSize() being on the list.