我有这段代码
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>
最佳答案
您似乎正在寻找 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());
关于java - 在 Java 8 中收集列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55140299/