我将此地图功能作为我的信息流的一部分。 parse.apply
基本上是Double::valueOf
。我的intelliJ建议我可以用正则表达式Lambda替换语句lambda。
.map(x -> { return StringUtils.isEmpty(x) ? parse.apply("0") : parse.apply(x);
})
如果我不必担心我可以做的空字符串:
.map(parse::apply)
。在这种情况下我该怎么做?
答案 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
。请注意它。