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

Jus*_*n A 1 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) : "")
      ));
Run Code Online (Sandbox Code Playgroud)

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

wer*_*ero 7

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

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


Yas*_*jaj 7

你可能想用 Optional#ofNullable#orElse

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

  • @JustinA嘿贾斯汀,只要你有你想要的东西,就可以接受其中一个:). (2认同)