用 Stream API 替换 for 循环中的 if/else

问题描述 投票:0回答:1

我有以下代码,我想为此片段使用 Stream API:

for (Task task : deletedTasks) {
    if (!Objects.isNull(task.getUser())) {
        kafkaSenderTaskProducer.sendAutoRejectedTasksEvent(task.getId(), task.getUser().getId());
    } else {
        kafkaSenderTaskProducer.sendDeletedEvent(task);
    }
}

对于第二个 else 条件我有代码,但我不知道如何为第一个条件编写代码:

deletedTasks.stream()
            .filter(task -> Objects.isNull(task.getUser()))
            .forEach(kafkaSenderTaskProducer::sendDeletedEvent);

如何使用 Stream API 来满足第一个条件?

java for-loop lambda java-stream
1个回答
1
投票

这里不需要使用流或过滤器。简单的 forEach 将为您工作。在代码中不必要地使用流将会产生性能问题。您可以按照以下步骤操作:

deletedTasks.forEach(task -> {
    if(task.getUser() == null) {
       kafkaSenderTaskProducer.sendDeletedEvent(task);
    } else {
       kafkaSenderTaskProducer.sendAutoRejectedTasksEvent(task.getId(), task.getUser().getId());
    }
})
© www.soinside.com 2019 - 2024. All rights reserved.