zoukankan      html  css  js  c++  java
  • 三种迭代能否删除

    package com.day15.For;

    import java.util.ArrayList;
    import java.util.Iterator;

    /*普通for循环,可以删除,但是索引要--

    迭代器,可以删除,但是必须使用迭代器自身的remove方法,而不是集合的remove方法,否则会出现并发修改异常

    增强for循环不能删除,因为增强for循环底层依赖的是迭代器,但是调用删除方法时,必须使用list.remove(),则相当于调用的是集合的删除方法,引起并发修改异常

    public class ThreeDelete {

    public static void main(String[] args) {
      ArrayList<String> list=new ArrayList<>();
      list.add("a");
      list.add("b");
      list.add("b");
      list.add("c");
      list.add("d");
      //普通for循环删除,索引要--
      /* for(int i=0;i<list.size();i++) {
        if("b".equals(list.get(i))) {
          list.remove(i--);
        }
       }
      System.out.println(list);//[a, c, d]
      */

    /*
      Iterator<String> it =list.iterator();
        while(it.hasNext()) {
          if("b".equals(it.next())) {
          //list.remove("b");//不能用集合的删除方法,因为迭代过程中如果集合修改会出现并发修改异常
          it.remove();
        }
      }
      System.out.println(list);//[a, c, d]
    */
    /*  for(Iterator<String> it1=list.iterator();it1.hasNext();) {
        if("b".equals(it1.next())) {
        it1.remove();
        }
      }
      System.out.println(list);//[a, c, d]
    */
        for(String str:list) {
          if("b".equals(str)) {
          list.remove("b");//并发修改异常,因为增强for循环底层依赖的是迭代器
        }
      }
    }

    }

  • 相关阅读:
    WPF入门(一):简单的演示
    代码的演化DI(理解依赖注入di,控制反转ioc)
    WPF入门(三):简单绑定 绑定到页面元素
    WPF入门(四):简单绑定 静态资源绑定
    WPF入门(六)样式Style
    WPF入门(八)布局(layout) port 2
    js select onchange
    js this指向
    js 两个日期之间有多少个星期几
    js table的所有td 按行合并
  • 原文地址:https://www.cnblogs.com/zhujialei123/p/9025873.html
Copyright © 2011-2022 走看看