乐趣区

关于java:lamda表达式的stream判空及优雅处理

问题:
1. 在对应用 lamda 表达式的 stream 对 list 进行解决时,如果 list 是 null 将会有让人好受的 NPE
2. 在每个 list.stream()前都 if(list!=null)又不够优雅
3. 在对 list 中对象进行操作时也得 if() 防止 NPE,代码显得臃肿

优雅解决:
1. 在操作前对 list 自身进行判空解决

应用 Optional 进行判空解决,如下:Optional.ofNullable(allList).orElse(new ArrayList<>()).stream()
在 list 为 null 时,返回一个空 list 对象,否则执行 stream 后的操作
* orElse:如果值为空,返回一个对象
* orElseGet:如果值为空,执行一段 lambda 并返回一个对象

2. 在对 list 中对象操作时判空解决

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

3. 在对两个 list 进行 addall()操作时,判空解决

Optional.ofNullable(list1).orElse(new ArrayList<>()).addAll(list2);
list 的判空 addall
退出移动版