【问题标题】:Collecting Lists in Java 8在 Java 8 中收集列表
【发布时间】:2019-03-13 11:00:40
【问题描述】:

我有这段代码

List<BookDto> deskOfficer =

        delegationExtendedDto
            .stream()
            .filter(Objects::nonNull)
            .filter(d -> d.getMembers() !=null && !d.getMembers().isEmpty())
            .map(d -> d.getMembers()
                        .stream()
                        .filter(Objects::nonNull)
                        .filter(m -> RolesEnum.RESPONSIBLE_ADMIN.equals(m.getRole())))
                        .collect(Collectors.toList());

但我有一个编译错误

Type mismatch: cannot convert from List<Stream<BookDto>> to List<BookDto>

【问题讨论】:

    标签: java java-8 functional-programming java-stream


    【解决方案1】:

    您似乎正在寻找 flatmap 为:

    List<BookDto> deskOfficer =  delegationExtendedDto
            .stream()
            .filter(Objects::nonNull)
            .filter(d -> d.getMembers() != null) // stream would handle the empty case
            .flatmap(d -> d.getMembers().stream()) // <<< here -- the stream objects are different
            .filter(Objects::nonNull)
            .filter(m -> RolesEnum.RESPONSIBLE_ADMIN.equals(m.getRole())))
            .collect(Collectors.toList());
    

    【讨论】:

      猜你喜欢
      • 2019-09-24
      • 1970-01-01
      • 2018-01-15
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多