为了账号安全,请及时绑定邮箱和手机立即绑定

将 for 循环转换为流

将 for 循环转换为流

慕雪6442864 2022-07-14 09:46:54
我有以下 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);    }}
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

如果你真的需要使用 aStream你可以这样做


res.setAllLists(

    res.getAllLists().stream()                          // convert list to stream

        .filter(line -> !dataRes.getData().getId().equalsIgnoreCase(line))     // filter to keep only the non equal items

        .collect(Collectors.toList()));                 // convert back to a list

但是,Lamda Expression onList是一种更简洁的方法,并且避免了引入Stream会带来的性能开销


res.getAllLists().removeIf(list -> dataRes.getData().getId().equalsIgnoreCase(String.valueOf(list.getId())));


查看完整回答
反对 回复 2022-07-14
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

要有条件地从集合中删除元素,请使用该removeIf(Predicate<? super E> filter)方法。

请注意,这不使用问题中要求的流处理,而是使用 Lambda 表达式,因此它是较新的 Java 8“功能”语法。

res.getAllLists().removeIf(list -> dataRes.getData().getId().equalsIgnoreCase(
                                       String.valueOf(list.getId())));


查看完整回答
反对 回复 2022-07-14
  • 2 回答
  • 0 关注
  • 272 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信