如何防止java流两次运行相同的方法?

时间:2016-07-02 08:13:26

标签: java lambda java-8 java-stream

我正在尝试为值创建名称映射。我有这个流调用方法getValue两次。一旦确保返回值不为null,然后再次实际收集该值。我试图弄清楚如何添加一个lambda块来捕获返回对象。

Arrays.stream(enums)
     .collect(Collectors.toMap(
          en -> en.name(), 
          en -> ((issue.getValue(en) != null) ? issue.getValue(en) : "")
      ));

当我尝试不同的安排时,我不断收到各种IDE语法错误。我觉得这应该是微不足道的,但它却在逃避我。任何帮助都会很棒......

2 个答案:

答案 0 :(得分:7)

只需使用块而不是单个表达式:

theEnum -> { String v = issue.getValue(theEnum); return v != null ? v : ""; }

答案 1 :(得分:7)

您可能想要使用Optional#ofNullable#orElse

Arrays.stream(enums)
      .collect(Collectors.toMap(
          en -> en.name(), 
          en -> Optional.ofNullable(issue.getValue(en)).orElse("")
       ));