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

不要在 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”,会是同样的
结果吗?

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容