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

  • 相关阅读:
    百度搜索技巧
    phpstorm知识点
    A-Z
    边框
    display
    布局
    盒模型
    浮动
    字体与图标
    pselect 问题
  • 原文地址:https://www.cnblogs.com/jianwei-dai/p/5896998.html
Copyright © 2011-2022 走看看