zoukankan      html  css  js  c++  java
  • List怎么遍历删除元素

    public static void main(String[] args) {
      List<String> list = new ArrayList<String>();
      list.add("1");
      list.add("2");
      list.add("3");
      list.add("4");
      list.add("5");
      list.add("6");

      //方法1
      for (int i = 0; i <list.size(); i++) {
       if(list.get(i).equals("2")||list.get(i).equals("4")||list.get(i).equals("5"))
        list.remove(i);
      }

     //方法2
    //  for (int i = list.size()-1; i >= 0; i--) {
    //   if(list.get(i).equals("2")||list.get(i).equals("4")||list.get(i).equals("5"))
    //    list.remove(i);
    //  }

     //方法3
    //  for(String str:list){
    //   if(str.equals("1")){
    //    list.remove(str);
    //   }
    //  }

       //方法4
    //  Iterator<String> iterator = list.iterator();
    //  while (iterator.hasNext()) {
    //   String s = iterator.next();
    //   if(s.equals("2")||s.equals("4")||s.equals("5"))
    //   iterator.remove();
    //  }
      System.out.println(list.toString());
     }

    先试方法一i递增遍历:结果如下:[1, 3, 5, 6],删除数据不正确,是因为list每删除一个元素,后面的元素会补上也就是如果删除了下标为2的数据,下标3立马缓冲下标2,所以导致删除会混乱。

    动脑子一想,那么i递减后面的元素补上就和循环没有关系了,实践证明方法二是可以的;

    方法三:增强型循环,直接报错java.util.ConcurrentModificationException

    方法四:迭代器遍历list删除元素是可以的,不过要注意用的是iterator的remove方法,如果用list.remove还是会报错java.util.ConcurrentModificationException

  • 相关阅读:
    SpringMVC截图版
    MySQL
    Mybatis-Spring
    Spring
    get
    log
    SpringBoot
    Mybatis和spingboot整合
    学习笔记-英语
    PartialView+$.reload()局部刷新
  • 原文地址:https://www.cnblogs.com/jianwei-dai/p/5896998.html
Copyright © 2011-2022 走看看