lamda表達式的stream判空及優雅處理

問題:
1.在對使用lamda表達式的stream對list進行處理時,若是list是null將會有讓人難受的NPE
2.在每一個list.stream()前都if(list!=null)又不夠優雅
3.在對list中對象進行操做時也得if()避免NPE,代碼顯得臃腫code

優雅解決:
1.在操做前對list自己進行判空處理對象

使用Optional進行判空處理,以下:
Optional.ofNullable(allList).orElse(new ArrayList<>()).stream()
在list爲null時,返回一個空list對象,不然執行stream後的操做
* orElse:若是值爲空,返回一個對象
* orElseGet:若是值爲空,執行一段lambda並返回一個對象

2.在對list中對象操做時判空處理io

//去除list列表中的空對象
list1.stream().filter(Objects::nonNull).map();

3.在對兩個list進行addall()操做時,判空處理stream

Optional.ofNullable(list1).orElse(new ArrayList<>()).addAll(list2);
list的判空addall
相關文章
相關標籤/搜索