Lambda表达式对象映射问题

时间:2018-10-19 14:43:18

标签: java lambda java-8 java-stream

我有一个 PrimaryDTO 类,其中包含一个List<SecondaryDTO>,而这个 SecondaryDTO 本身包含一个Set<SecondaryCategoryDTO>,最后是这个 SecondaryCategoryDTO 包含布尔状态

在下面的语句中,我要检查是否有任何状态 true ,然后在语句未输入的情况下进入。

if(Optional.ofNullable(PrimaryDTO.getSecondaryDTOs()).
    orElse(PrimaryDTO.getSecondaryDTOs()).stream().filter(Objects::nonNull)
    .map(x->x.getSecondaryCategories()).anyMatch(z-> z.isStatus()==true))

但是,在上述语法中, z.isStatus()给出了错误,因为它说z是一个 set 。我已经使用 getSecondaryCategories()通过 .map 迭代了Set。我不明白为什么要按其设定?

1 个答案:

答案 0 :(得分:1)

似乎您可能将PrimaryDTO作为空值 ,而将List<SecondaryDTO>作为空值,其中的某些元素{{1 }}在这种情况下也可能为null:

List