使用 removeIf()、replaceAll() 和 List.sort() 直接转换集合。
代码对比
✕ Iterator mutation loop
for (Iterator<Order> it = orders.iterator(); it.hasNext();) {
if (it.next().cancelled()) {
it.remove();
}
}
✓ Java 8+
orders.removeIf(Order::cancelled);
发现此代码有问题? 告诉我们。
为什么现代方式更好
意图清晰
操作描述要更改什么,而不是如何迭代。
修改更安全
避免手动遵循迭代器移除规则。
代码更少
常见转换只需一个表达式。
旧方式
手动迭代器移除
现代方式
Collection.removeIf()
自 JDK
8
难度
入门
JDK 支持
用集合批量操作替代修改循环
可用
自 JDK 8 起可用(2014 年 3 月)
工作原理
现代集合接口直接提供常见的修改操作。removeIf()、replaceAll() 和 List.sort() 等方法用明确表达预期转换的操作,替代控制流繁重的循环。
相关文档
证明