/*** The number of times this list has been structurally modified.
* 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.
*
*
This field is used by the iterator and list iterator implementation
* returned by the {@codeiterator} and {@codelistIterator} methods.
* If the value of this field changes unexpectedly, the iterator (or list
* iterator) will throw a {@codeConcurrentModificationException} in
* response to the {@codenext}, {@coderemove}, {@codeprevious},
* {@codeset} or {@codeadd} operations. This provides
* fail-fast behavior, rather than non-deterministic behavior in
* the face of concurrent modification during iteration.
*
*
Use of this field by subclasses is optional. If a subclass
* wishes to provide fail-fast iterators (and list iterators), then it
* merely has to increment this field in its {@codeadd(int, E)} and
* {@coderemove(int)} methods (and any other methods that it overrides
* that result in structural modifications to the list). A single call to
* {@codeadd(int, E)} or {@coderemove(int)} must add no more than
* one to this field, or the iterators (and list iterators) will throw
* bogus {@codeConcurrentModificationExceptions}. If an implementation
* does not wish to provide fail-fast iterators, this field may be
* ignored.
* MARK:
* 列表结构被修改的次数,在所有会修改列表的方法上都会 modCount++;
* 在迭代器中控制并发*/
protected transient int modCount = 0;