2017-07-29 209 views
2

我有这个map函数作为我的流的一部分。 parse.apply基本上是做Double::valueOf。我的intelliJ建议我可以用正则表达式Lambda替换语句lambda。用正则表达式替换lambda表达式lambda java 8 stream map

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

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

+0

什么是“正则表达式Lambda”? –

回答

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如果给定的字符串没有双重代表。注意它。

+0

但我想用0替换空的 – user1692342