java - 连接可选列表

标签 java java-8 option-type

我有三个 Optional> 必须合并并返回。我尝试使用 Optional.map()flatmap() 但没有成功。

public Optional<List<Entiy>> getRecords() {
    Optional<List<Entiy>> entity1 = repo.findAllByStatus("1");
    Optional<List<Entiy>> entity2 = repo.findAllByStatus("2");
    Optional<List<Entiy>> entity3 = repo.findAllByStatus("3");
    //Need to return a concatenation of entity1, 2 and 3
}

关于如何高效地做事有什么想法吗?

最佳答案

类似的东西:

return Optional.of(Stream.of(entity1.orElse(new ArrayList<>()), entity2.orElse(new ArrayList<>()), entity3.orElse(new ArrayList<>()))
            .flatMap(List::stream)
            .collect(Collectors.toList()));

或者说更具可读性:

return Optional.of(Stream.of(entity1, entity2, entity3)
        .filter(Optional::isPresent)
        .map(Optional::get)
        .flatMap(List::stream)
        .collect(Collectors.toList()));

关于java - 连接可选列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55186324/

相关文章:

swift - 按需静态计算?

java - 使用ArrayList从数据库中检索数据并将其显示在JSP中

java - 房间 IllegalArgumentException : intcannot be converted to an Element

java - 帮助 Web 服务 vector Java Glassfish

java - 在 Function 接口(interface)中包装输入时出现问题

arrays - "Initializer for conditional binding must have Optional type, not ' [任意] '"- swift

java - Mockito.when().thenReturn() 不起作用或返回 null

java - 是否可以在 Java 中使用 Stream API 返回分页结果?

java - 如何制作一个接受尾随垃圾的 DateTimeFormatter?

android-apt & jack 和吉尔