【问题标题】:The Filter of my Java- Stream does not work我的 Java-Stream 的过滤器不起作用
【发布时间】:2021-01-17 23:36:49
【问题描述】:

我无法解释为什么我的过滤器不起作用。我在if-statement 中排除了条件,以检查条件是否真的为真。当DefaultLang (v.getLinkDefaultLang()) 和 currentLang (v.getLinkCurrentLang()) 为 Null 时,我不想在我的 List 中有值!

manualResponseTOs.values().stream()
                          .filter(v -> isEmpty(v.getLinkDefaultLang()) && isEmpty(v.getLinkCurrentLang()))
                          .collect(Collectors.toList());

【问题讨论】:

  • 你需要反转条件,如果isEmpty为null返回true,因为filter用来过滤掉哪些对collect有效

标签: java list stream hashmap java-stream


【解决方案1】:

谢谢!现在我有了解决方案。

filter(v-> !(isEmpty(v.getLinkDefaultLang()) && isEmpty(v.getLinkCurrentLang())))

【讨论】:

    【解决方案2】:

    如果您愿意,您还可以按条件过滤,而不是将所有条件放在同一行。它更具可读性。

    manualResponseTOs.values().stream()
            .filter(v -> !isEmpty(v.getLinkDefaultLang()))
            .filter(v -> !isEmpty(v.getLinkCurrentLang()))
            .collect(Collectors.toList());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多