用正则表达式lambda java 8流映射替换语句lambda

时间:2017-07-29 08:05:57

标签: lambda java-8

我将此地图功能作为我的信息流的一部分。 parse.apply基本上是Double::valueOf。我的intelliJ建议我可以用正则表达式Lambda替换语句lambda。

.map(x -> { return StringUtils.isEmpty(x) ? parse.apply("0") : parse.apply(x);
   })

如果我不必担心我可以做的空字符串: .map(parse::apply)。在这种情况下我该怎么做?

1 个答案:

答案 0 :(得分:4)

您可以在到达.map之前过滤掉所有空字符串:

.filter(s -> !StringUtils.isEmpty(s))
.map(parse)

编辑:如果要将空字符串替换为“0”,则只需将一个map拆分为两个单独的操作。它不会影响效率,并且会从函数式编程的角度更容易理解代码:

.map(s -> StringUtils.isEmpty(s) ? "0": s)
.map(parse)

EDIT2:当你调用Double::valueOf时,如果给定的字符串没有双重表示,你必须知道它可以抛出java.lang.NumberFormatException。请注意它。