zoukankan      html  css  js  c++  java
  • java ListIterator接口

    并发修改异常产生的原因及解决方案
    * A:案例演示
    * 需求:我有一个集合,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。

    List list = new ArrayList();
    list.add("a");
    list.add("b");
    list.add("world");
    list.add("d");
    list.add("e");

    /*Iterator it = list.iterator();    //边遍历,  边增加元素 -------- 是程序不允许的操作
    while(it.hasNext()) {
    String str = (String)it.next();
    if(str.equals("world")) {
    list.add("javaee"); //这里会抛出ConcurrentModificationException并发修改异常
    }
    }*/


    * B:ConcurrentModificationException出现
    * 迭代器遍历,集合修改集合
    * C:解决方案
    * a:迭代器迭代元素,迭代器修改元素(ListIterator的特有功能add)   //listiterator特有的方法解决这个问题
    * b:集合遍历元素,集合修改元素

    解决办法:

    ListIterator lit = list.listIterator(); //如果想在遍历的过程中添加元素,可以用ListIterator中的add方法
    while(lit.hasNext()) {
    String str = (String)lit.next();
    if(str.equals("world")) {
    lit.add("javaee");
    //list.add("javaee");
    }
    }

    ListIterator
    * boolean hasNext()是否有下一个
    * boolean hasPrevious()是否有前一个
    * Object next()返回下一个元素
    * Object previous();返回上一个元素

      

  • 相关阅读:
    racket eval
    mex不兼容
    【转】雷军 程序员随想
    UBoot 目录结构和编译过程
    远程监控web开发
    STL容器[08]
    STL容器[07]
    STL容器[17]
    STL容器[06]
    stl.map使用总结
  • 原文地址:https://www.cnblogs.com/yimian/p/6512554.html
Copyright © 2011-2022 走看看