zoukankan      html  css  js  c++  java
  • Java中List循环遍历的时候删除当前对象(自己)

    方法一
    Java代码  
    ArrayList<String> list = new ArrayList<String>();  
            list.add("one");  
            list.add("two");  
            list.add("two");  
            list.add("two");  
            list.add("two");  
            for(int i=0;i<list.size();i++){  
                if(list.get(i).equals("two")){  
                    list.remove(i);  
                }  
            }  
            System.out.println(list);  
     结果:
    Java代码  
    [one, two, two]  

    方法二
    Java代码  
    ArrayList<String> list = new ArrayList<String>();  
    list.add("one");  
    list.add("two");  
    list.add("two");  
    list.add("two");  
    list.add("two");  
    for(String s:list){  
        if(s.equals("two")){  
            list.remove(s);  
        }  
    }  
    System.out.println(list);  
     
    结果:
    Java代码  
    Exception in thread "main" java.util.ConcurrentModificationException  
        at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)  
        at java.util.AbstractList$Itr.next(AbstractList.java:343)  
        at Test.main(Test.java:22)  

    方法三:
    Java代码  
    ArrayList<String> list = new ArrayList<String>();  
    list.add("one");  
    list.add("two");  
    list.add("two");  
    list.add("two");  
    list.add("two");  
    Iterator<String> iter = list.iterator();  
    while(iter.hasNext()){  
        String s = iter.next();  
        if(s.equals("two")){  
            iter.remove();  
        }  
    }  
    System.out.println(list);  
    结果:
    Java代码  
    [one]  
     
    结论:
    删除还是用迭代器的比较好,其它的都会有问题.

  • 相关阅读:
    python+OpenCV 特征点检测
    如何使用《DB 查询分析器》高效地生成旬报货运量数据
    Hive-RCFile文件存储格式
    NET:交换机的背板带宽,交换容量,包转发率区别
    css:cdata
    [ZOJ 3623] Battle Ships
    [NYOJ 860] 又见01背包
    [Uva 11825] Hackers’ Crackdown
    2014-10-29
    [转] 三鲜之所在
  • 原文地址:https://www.cnblogs.com/gamel/p/6211222.html
Copyright © 2011-2022 走看看