Java流可选:如何将多个内部Optional当前条件转换为Optional,flatMap()

ih99xse1  于 2023-04-28  发布在  Java
关注(0)|答案(1)|浏览(142)

我正在尝试将多个Optional isPresent转换为Optional。flatMap,但不知道如何实现。

private Optional<Commit> getCommit1 (String id, Integer number) {
    **Optional<Revision> revision = repository.findById(id,number);
    if (revision.isPresent()) {
        Optional<Commit> commit = commitRepository.findById(revision.get().getCommitId());
        if (commit.isPresent()) {
            return commit;
        }
    }
    return Optional.empty();**
}

我想将粗体部分转换为单个可选。有人能帮我吗

zpgglvta

zpgglvta1#

正如你提到的,你应该使用 flatMap 方法。一种方法是这样的:

repository.findById(id,number)
    .map(revision -> revision.getCommitId())
    .flatMap(commitId -> commitRepository.findById(commitId));

此外,您可以为 mapflatMap 参数使用方法引用,从而获得更简洁的代码:

repository.findById(id,number)
    .map(Revision::getCommitId)
    .flatMap(commitRepository::findById);

相关问题