2017-07-29 212 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