没弄清楚到底是结构发生改变还是元素改变抛出异常
故做以下验证
public static void main(String[] args) {
Person p1 = new Person(10, "xl");
Person p2 = new Person(11, "xm");
Person p3 = new Person(12, "xs");
List<Person> personList = new LinkedList<>();
personList.add(p1);
personList.add(p2);
personList.add(p3);
Iterator<Person> iterator = personList.iterator();
int i = 0;
while (iterator.hasNext()){
if (i==2){
personList.get(i).age++;
}
System.out.println(iterator.next());
i++;
}
}
public static class Person{
public int age;
public String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}
如上代码是可以成功跑出来的
但如果改成这样
则会抛出异常
所以证明了只有在结构改变的情况 下才会触发fail fast机制