zoukankan      html  css  js  c++  java
  • 集合框架之三种迭代的能否删除

    一:普通for循环的删除

    1 // 普通for循环,通过索引删除,删除后索引要--
    2         for (int i = 0; i < list.size(); i++) {
    3             if ("d".equals(list.get(i))) {
    4                 list.remove(i--);
    5             }
    6         }
    7         System.out.println(list);

    二:迭代器两种遍历(删除)方式

      方式一:

    1 // 迭代器删除,不能用集合的删除方法,因为迭代过程中修改会发生并发修改异常
    2         ListIterator<String> iter = list.listIterator();
    3         while (iter.hasNext()) {
    4             if ("d".equals(iter.next())) {
    5                 iter.remove();
    6             }
    7         }
    8         System.out.println(list);

      方式二:

    1      for(ListIterator<String> iter=list.listIterator();iter.hasNext();){
    2             if("d".equals(iter.next())){
    3                 iter.remove();
    4             }
    5         }
    6         System.out.println(list);

    三:增强fore循环删除

    // 增强for循环底层依赖迭代器,不能删除,只能遍历;删除会出现并发修改异常( java.util.ConcurrentModificationException)
            for (String string : list) {
                list.remove(string);//这是错误的代码
            }
            System.out.println(list);
  • 相关阅读:
    day7 反射
    day7 面向对象进阶
    day7 面向对象class()学习
    day6 subprocess模块、logging模块
    day6 hashlib模块
    day6 ConfigParser模块 yaml模块
    day6 xml文件格式的处理
    day6 shelve模块
    day6 SYS模块
    Servlet的学习之Response响应对象(1)
  • 原文地址:https://www.cnblogs.com/le-ping/p/7413166.html
Copyright © 2011-2022 走看看