我正在尝试为值创建名称映射。我有这个流调用方法getValue
两次。一旦确保返回值不为null,然后再次实际收集该值。我试图弄清楚如何添加一个lambda块来捕获返回对象。
Arrays.stream(enums)
.collect(Collectors.toMap(
en -> en.name(),
en -> ((issue.getValue(en) != null) ? issue.getValue(en) : "")
));
当我尝试不同的安排时,我不断收到各种IDE语法错误。我觉得这应该是微不足道的,但它却在逃避我。任何帮助都会很棒......
答案 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("")
));