欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java中for循环、增强for循环、迭代器的删除操作使用注意(以Arraylist为例)

程序员文章站 2022-03-05 15:00:36
for循环public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("a"); list.add("a"); list.add("a"); list.add("z"); list.add("s"); list.add("a"); //for循环遍历 //注意删除元素后集合长度发生,i一直....
  1. for循环
public static void main(String[] args) {
      ArrayList list = new ArrayList();
      list.add("a");
      list.add("a");
      list.add("a");
      list.add("z");
      list.add("s");
      list.add("a");
      //for循环遍历
      //注意删除元素后集合长度发生,i一直向后增加
      for (int i = 0; i < list.size(); i++) {
          if (list.get(i)=="a"){
              list.remove(i);
              //i--;可以对循环进行干涉,达到目的
          }
      }
  }

结果:
[a, z, s]
2. 增强for循环

public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("a");
        list.add("a");
        list.add("a");
        list.add("z");
        list.add("s");
        list.add("a");
        //增强for循环
        //不允许遍历时对元素进行操作,如果进行操作会抛出异常ConcurrentModificationException
        for (Object obj:list) {
            if (obj.equals("a")){
                list.remove(obj);
                break;//操作一次后必须break结束循环,否则会抛出异常
            }
        }
        System.out.println(list);
    }

未加break结果
Exception in thread “main” java.util.ConcurrentModificationException
at java.util.ArrayList I t r . c h e c k F o r C o m o d i f i c a t i o n ( A r r a y L i s t . j a v a : 911 ) a t j a v a . u t i l . A r r a y L i s t Itr.checkForComodification(ArrayList.java:911) at java.util.ArrayList Itr.checkForComodification(ArrayList.java:911)atjava.util.ArrayListItr.next(ArrayList.java:861)
at collection.day3.CunDemo.main(CunDemo.java:26)
加上break结果
[a, a, z, s, a]

  1. 迭代器
public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("a");
        list.add("a");
        list.add("a");
        list.add("z");
        list.add("s");
        list.add("a");
        Iterator iterator = list.iterator();
        //hasNext() 如果迭代具有更多元素,则返回 true 。 
        while(iterator.hasNext()){
            Object obj = iterator.next();//返回迭代中的下一个元素。 
            iterator.remove();//Iterator中特有方法remove删除元素,从底层集合中删除此迭代器返回的最后一个元素(可选操作)。 
        }
        System.out.println(list);*/
    }

结果
[]

本文地址:https://blog.csdn.net/qdzjo/article/details/109891439

相关标签: 笔记 java