問題:
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