需求:我有一个集合,请问,我想判断里面有没有”world”这个元素,如果有,我就添加一个”javaee”元素,请写代码实现。

    1. List list = new ArrayList();
    2. list.add("a");
    3. list.add("b");
    4. list.add("world");
    5. list.add("d");
    6. list.add("e");
    7. Iterator it = list.iterator(); //获取迭代器
    8. while(it.hasNext()) { //判断集合中是否有元素
    9. String str = (String)it.next(); //向下转型
    10. if(str.equals("world")) {
    11. list.add("javaee"); //这里会抛出ConcurrentModificationException并发修改异常
    12. }
    13. }

    ConcurrentModificationException出现

    • 迭代器遍历,集合修改集合

    解决方案

    • a:迭代器迭代元素,迭代器修改元素(ListIterator的特有功能add)
    • b:集合遍历元素,集合修改元素
      1. ListIterator lit = list.listIterator(); //如果想在遍历的过程中添加元素,可以用ListIterator中的add方法
      2. while(lit.hasNext()) {
      3. String str = (String)lit.next();
      4. if(str.equals("world")) {
      5. lit.add("javaee");
      6. //list.add("javaee");
      7. }
      8. }