美文网首页
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