You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Stream API替换for循环中的if/else逻辑实现任务事件推送

实现方案

你可以根据实际需求选以下任意一种写法:

方案1:和你现有else分支写法统一,拆分两个Stream处理(风格更清晰)

你要的if分支(task.getUser()不为空)代码如下:

deletedTasks.stream()
            // 过滤出user不为空的任务
            .filter(task -> !Objects.isNull(task.getUser()))
            .forEach(task -> kafkaSenderTaskProducer.sendAutoRejectedTasksEvent(task.getId(), task.getUser().getId()));

和你已经写好的else分支代码搭配,就可以覆盖原for循环的所有逻辑。

方案2:单Stream一次遍历完成所有逻辑(性能更优)

如果不想遍历两次deletedTasks集合,也可以直接在单个Stream的forEach中完成分支判断,和原for循环逻辑完全等价:

deletedTasks.stream()
            .forEach(task -> {
                if (!Objects.isNull(task.getUser())) {
                    kafkaSenderTaskProducer.sendAutoRejectedTasksEvent(task.getId(), task.getUser().getId());
                } else {
                    kafkaSenderTaskProducer.sendDeletedEvent(task);
                }
            });

内容的提问来源于stack exchange,提问作者Олександр Житарюк

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:36:06