聊一聊 CopyOnWriteArraySet 的迭代删除

上周在工程中涉及到一个清理 Set 集合的操作,将满足设定条件的项从 Set 中删除掉。简化版本代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] args) {
Set<String> sets = new CopyOnWriteArraySet<>();
sets.add("1");
sets.add("3");
sets.add("3");
sets.add("4");
Iterator<String> iterator = sets.iterator();
while (iterator.hasNext()){
iterator.remove();
}
System.out.println(sets);
}

这个看起来是个很常规的问题,没有验证就直接发了线下环境,然后就收到了业务方反馈的服务无法正常使用的问题了。

阅读更多