java8中流式語法,18K以上的程序員還是要掌握下的

編程語言 Java 程序員 泛函編程 軟件 程序汪汪 2018-12-07

環境

java1.8、idea2018、springboot

幫助人群

java軟件工程師、java後端開發、準備面試的java軟件開發、jdk1.8新特性

學習目標

掌握java之Lambda函數式編程 filter、map等最常見用法;

參考樣例代碼你也可以寫出自己的Lambda函數式代碼;

以前我寫過一篇Lambda函數式編程文章,現在我在補充下。

代碼舉例

jdk1.8 Lambda函數式編程在應用開發中最常見的例子如下

java8中流式語法,18K以上的程序員還是要掌握下的

測試數據準備

轉換

java8中流式語法,18K以上的程序員還是要掌握下的

map

轉換加過濾1

java8中流式語法,18K以上的程序員還是要掌握下的

map+filter

轉換加過濾2

java8中流式語法,18K以上的程序員還是要掌握下的

map+object

轉換加過濾3

java8中流式語法,18K以上的程序員還是要掌握下的

map+entryset

匹配指定一條

java8中流式語法,18K以上的程序員還是要掌握下的

防NPE1

Optional.ofNullable(集合對象).orElse(空集合)

java8中流式語法,18K以上的程序員還是要掌握下的

注意默認空值,建議用下面這兩個,一個空集合、一個空字符。

new 集合會消耗資源。

java8中流式語法,18K以上的程序員還是要掌握下的

防NPE2

除了上面防集合對象null,還有防集合裡元素null

利用 filter(Objects::nonNull)

java8中流式語法,18K以上的程序員還是要掌握下的

map遍歷

比較簡潔啦

java8中流式語法,18K以上的程序員還是要掌握下的

list去重

也是很簡潔啊,stream().distinct()

java8中流式語法,18K以上的程序員還是要掌握下的

方法引用

上面的防空2,filter(Objects::nonNull) 就是方法引用,代碼簡潔到巔峰了

java8中流式語法,18K以上的程序員還是要掌握下的

嵌套循環扁平話

這個平時用的我用的很少

java8中流式語法,18K以上的程序員還是要掌握下的

java8中流式語法,18K以上的程序員還是要掌握下的

java8中流式語法,18K以上的程序員還是要掌握下的

father.stream().map(o->o.getChildAs()).flatMap(List::stream)
.map(gg->gg.getName()).forEach(
System.out::println);

注意

filter和map都可以連續多個在一起用的,

如filter(XXX).filter(XXXX)

map(XXX),map(XXXX)

流式語法,程序員們學下吧

相關推薦

推薦中...