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

将语句lambda替换为正则表达式lambda java 8流映射,lambda,java-8,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)。在这种情况下我该怎么办?您可以在到达.map之前过滤掉所有空字符串: .fil

我将此映射函数作为流的一部分
parse.apply
基本上就是在做
Double::valueOf
。我的intelliJ建议我可以用正则表达式lambda替换语句lambda

.map(x -> { return StringUtils.isEmpty(x) ? parse.apply("0") : parse.apply(x);
   })
如果我不必担心空字符串,我可以:
.map(parse::apply)
。在这种情况下我该怎么办?

您可以在到达
.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
。请注意。

但是我想用0替换空的值“正则表达式Lambda”是什么?