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

  • 相关阅读:
    C#实现office文档转换为PDF或xps的一些方法
    Asp.Net性能优化.
    我们该如何在网上寻找资源!!!!
    用谷歌浏览器来当手机模拟器
    js 文档高度
    文件的ContentType类型网页设计,HTML/CSS
    javascript 获取滚动条高度+常用js页面宽度与高度[转]
    学习MVC
    windows自带性能监控器
    C#语言规范之小结
  • 原文地址:https://www.cnblogs.com/jianwei-dai/p/5896998.html
Copyright © 2011-2022 走看看