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循环底层依赖的是迭代器
        }
      }
    }

    }

  • 相关阅读:
    android基于adb的性能测试
    mysql-3 数据表的创建、增删改查
    17.3.16---python内建函数
    17.3.15---C语言详解FILE文件操作
    17.3.15---关于GPIO控制流水灯的信息
    17.3.15---关于GPIO学习笔记
    17.3.14--对于时钟的知识,涉及到的总结
    17.3.14对于面向对象的理解
    17.3.13--pycharm2和3的常识问题
    17.3.13--python编码问题
  • 原文地址:https://www.cnblogs.com/zhujialei123/p/9025873.html
Copyright © 2011-2022 走看看