modCount属性解析
相信大家在看集合框架的源码时都会发现一个特别的属性叫做modCount,会感觉这个属性存在感很低(或者没什么存在感),那么这个属性有什么用呢?
protected transient int modCount = 0;
1.案例演示
接下来以ArrayList为例,演示一下出现的问题。
ArrayList示例
前导知识:集合的foreach循环遍历实际上还是迭代器(Iterator)遍历
,具体参考
public static void main(String[] args) {
List<String> list = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
list.add("" + i);
}
//实际上还是迭代器遍历
for (String s : list) {
//迭代器遍历时对集合进行了add操作。
list.add("sss");
System.out.println(s);
}
/* 上面的foreach循环本质上就是下面的迭代器遍历
* Iterator<String> iterator = list.iterator();
* while (iterator.hasNext()) {
* String next = iterator.next();
* System.out.println(next);
* }
*/
}
//运行结果: 抛出并发修改异常
/* Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:911)
at java.util.ArrayList$Itr.next(Arr