当前案例用于演示制造异常 - 这个异常在以后的操作中可能会出现:
    使用集合的存储多个对象的时候,假设当遇到16岁的人时,就添加一个90岁的人
    该案例中,可能会出现并发修改异常,迭代器所认为的集合状态和集合真正的状态不统一,所以就报错了!

    1. package Test17_Demo.Demo06;/*
    2. @create 2020--12--07--14:33
    3. */
    4. public class Person {
    5. private String name;
    6. private int age;
    7. public Person() {
    8. }
    9. public Person(String name, int age) {
    10. this.name = name;
    11. this.age = age;
    12. }
    13. public String getName() {
    14. return name;
    15. }
    16. public void setName(String name) {
    17. this.name = name;
    18. }
    19. public int getAge() {
    20. return age;
    21. }
    22. public void setAge(int age) {
    23. this.age = age;
    24. }
    25. @Override
    26. public String toString() {
    27. return "Person{" +
    28. "name='" + name + '\'' +
    29. ", age=" + age +
    30. '}';
    31. }
    32. }

    制造异常:

    1. package Test17_Demo.Demo06;/*
    2. @create 2020--12--07--14:57
    3. */
    4. import Test17_Demo.Demo06.Person;
    5. import java.util.ArrayList;
    6. import java.util.Iterator;
    7. public class CurrentModificationDemo {
    8. public static void main(String[] args) {
    9. //创建对象
    10. ArrayList<Person> arrayList = new ArrayList<>();
    11. //添加对象
    12. arrayList.add(new Person("jack",18));
    13. arrayList.add(new Person("rose",16));
    14. arrayList.add(new Person("Aobama",60));
    15. arrayList.add(new Person("Lucy",25));
    16. arrayList.add(new Person("Tom",30));
    17. arrayList.add(new Person("sanfeng.zhang",90));
    18. //调用迭代器
    19. Iterator<Person> iterator = arrayList.iterator();
    20. while (iterator.hasNext()) {
    21. Person p = iterator.next();
    22. System.out.println(p.getAge() + "岁的" + p.getName());
    23. //判断年龄是不是为16
    24. if (p.getAge() == 16) {
    25. //存在则添加90岁的人
    26. arrayList.add(new Person("三丰",90));
    27. }
    28. }
    29. }
    30. }

    解决异常:

    1. package Test17_Demo.Demo06;/*
    2. @create 2020--12--07--14:57
    3. */
    4. //解决方案
    5. import java.util.ArrayList;
    6. import java.util.Iterator;
    7. public class CurrentModificationDemo02 {
    8. public static void main(String[] args) {
    9. //创建对象
    10. ArrayList<Person> arrayList = new ArrayList<>();
    11. //添加对象
    12. arrayList.add(new Person("jack",18));
    13. arrayList.add(new Person("rose",16));
    14. arrayList.add(new Person("Aobama",60));
    15. arrayList.add(new Person("Lucy",25));
    16. arrayList.add(new Person("Tom",30));
    17. //调用迭代器
    18. Iterator<Person> iterator1 = arrayList.iterator();
    19. while (iterator1.hasNext()) {
    20. Person p = iterator1.next();
    21. //System.out.println(p.getAge() + "岁的" + p.getName());
    22. //判断年龄是不是为16
    23. if (p.getAge() == 16) {
    24. //存在则添加90岁的人
    25. arrayList.add(new Person("三丰",90));
    26. //当遇到16岁的人的时候,就退出当前的操作
    27. break;
    28. }
    29. }
    30. //曲线救国 - 重新迭代集合中的数据 - 重新获取迭代器
    31. Iterator<Person> iterator2 = arrayList.iterator();
    32. while (iterator2.hasNext()) {
    33. Person p = iterator2.next();
    34. System.out.println(p.getAge() + "岁的" + p.getName());
    35. }
    36. }
    37. }