跳到主要内容

Java 集合遍历删除,最怕的是看起来能跑

· 阅读需 2 分钟
一介布衣
全栈开发者

Java 集合遍历删除这个问题,很多人都知道有坑。
可真正麻烦的地方在于,它不是每次都立刻用最醒目的方式出错。有些代码在某个数据量、某种路径下能跑,看起来像是可用的,结果一换场景就开始报错或者漏删,这种“看起来能跑”的状态反而最危险。

为什么这种问题最容易拖着不修

因为开发者很容易被一次成功执行说服。
尤其当逻辑本身并不复杂,只是遍历时顺手删几个元素,很多人会下意识觉得问题应该不大。可集合遍历和结构修改之间的关系一旦没处理稳,风险就不是概率问题,而是迟早会暴露的问题。

我后来对这类代码的判断标准

不是“当前这次有没有报错”,而是:

  • 修改动作和遍历动作是不是在同一套规则下
  • 读这段代码的人能不能立刻看懂它会不会安全
  • 数据规模和分支一变时,行为是否仍然稳定

如果这三件事答不上来,我就默认这里还不够稳。

小结

Java 集合遍历删除最怕的不是直接崩,而是表面看起来问题不大。
2017 年之后我对这类代码越来越警惕,就是因为“能跑一次”太容易让人放松。真正要追求的,不是现在没报错,而是逻辑边界本身就足够清楚。

我后来每次看到这类代码,都会额外问一句:如果换一批数据、换一种遍历方式、换一个调用顺序,它还会不会稳定?
这个问题一问出来,很多“先这样也能用”的侥幸心理就会消失。集合操作真正值钱的,不是眼前这次通过,而是下次别人改它时依然不容易踩坑。