美文网首页
foreach 循环里进行元素的 remove / add 操作

foreach 循环里进行元素的 remove / add 操作

作者: KavinDotG | 来源:发表于2017-09-28 16:01 被阅读0次

    不要在 foreach 循环里进行元素的 remove / add 操作。 remove 元素请使用 Iterator
    方式,如果并发操作,需要对 Iterator 对象加锁。

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class Test {
    
       public static void main(String[] args) {
           List<String> list = new ArrayList<String>();
           list.add("1");
           list.add("2");
           
           // 正确的删除操作使用iterator
           Iterator<String> iterator = list.iterator();
           while (iterator.hasNext()) {
               String item = iterator.next();
               if(item.equals("1")){
                   iterator.remove();
               }
           }
           
           // 错误的删除操作
           for(String i : list){
               if (i.equals("2")) {
                   list.remove(i);
               }
           }
           
           System.out.println(list);
       }
    
    }
    

    说明:以上代码的执行结果肯定会出乎大家的意料,那么试一下把“1”换成“2”,会是同样的
    结果吗?

    相关文章

      网友评论

          本文标题:foreach 循环里进行元素的 remove / add 操作

          本文链接:https://www.haomeiwen.com/subject/ifqvextx.html