将语句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”是什么?