问题:
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