Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

java 集合的 stream 流操作如何避免集合为 null 时的链式写法

Java 笔记 Java 笔记


java 8 中针对集合或数组提供了 stream 流式操作,这种链式写法非常简洁,但是当待操作的集合或数组为 null 时,会抛出 NPE 错误。有以下几种方式可以避免空错误,且又能保留链式写法的解决方案。

利用 Optional 类(java 8)

可以利用 Optional 封装类将要操作的集合放在里面,具体如下:

Optional.ofNullable(collection).orElse(Collections.emptySet()).stream()...

当要操作的集合对象 collection 为空时,在 orElse 里默认用 Collections.emptySet() 来规避 null,以可继续进行下一步的 stream 操作。

利用 org.apache.commons.collections4.CollectionUtils

也可以利用 apache 的 collections4 包,示例如下:

org.apache.commons.collections4.CollectionUtils.emptyIfNull(list).stream()...

Stream.ofNullable(java 9)

如果使用 java 9+,可以用流提供的 ofNullable 方法,例子如下:

Stream.ofNullable(arr)...