背景
前一段时间被问到了关于 List 集合的安全删除元素问题。一时间没反应过来这问题问的是什么,安全体现在什么地方,线程安全?线程安全可以保证元素粒度的数据唯一吗?删除是指什么,list.remove()?
带着这些疑问,重温了一下Java的集合知识。
问题分析
List为什么需要安全移除?
我不理解什么是安全删除,我开发的业务中也很少说需要用到remove的,我只记得一般用的话,都是remove(index)这样。写个测试代码看看
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for (int i = 0; i < list.size(); i++) {
if ("B".equals(list.get(i))) {
list.remove(i);
continue;
}
System.out.println(list.get(i));
}
这段代码的目的就是想把B移除,最后期望的输出只有AC两个字母,看一下运行结果:

目的达到了,那这个删除不就是安全删除吗?怎么才算安全删除?

4万+

被折叠的 条评论
为什么被折叠?



