java - 将 for 循环转换为流
问题描述
我有以下 for 循环,我需要使用集合流以保持与其他代码的一致性。
for (int i = 0; i < res.getAllLists().size(); i++) {
if (dataRes.getData().getId().equalsIgnoreCase(
String.valueOf(res.getAllLists().get(i).getId()))) {
res.getAllLists().remove(i);
}
}
解决方案
要有条件地从集合中删除元素,请使用该removeIf(Predicate<? super E> filter)
方法。
请注意,这不使用问题中要求的流处理,而是使用 Lambda 表达式,因此它是较新的 Java 8“功能”语法。
res.getAllLists().removeIf(list -> dataRes.getData().getId().equalsIgnoreCase(
String.valueOf(list.getId())));
推荐阅读
- javascript - 在 .then 函数中返回嵌套在 forEach 中的承诺
- reverse-proxy - 球童重写和重新分配
- python - 使用 API 访问 sqlalchemy 中的关系表数据
- java - 导出 VS Code Java 项目以在 VS Code 外部使用
- java - 这是我得到的错误:类型不匹配:无法从双精度转换为双精度 []
- c# - .Net Core 自动构建中的 BuildBunderMinifier
- excel - Can someone provide the technical reason why the `Interior.Color` property can't be assigned from one range to another in Excel VBA?
- ios - Swift 后台线程上来自 Realm 的不一致状态
- gis - 安装后的 Geogig 错误
- css - 将 CSS plus 选择器与自定义组件一起使用