Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/java-null-safe-collection-as-stream.html

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)...

 

集合(set)是一个无序且不重复的元素集合。可以使用大括号{}或者内置类set来创建集合。 ...
对于依赖,我会提供一些常见的第三方库,并给出它们在Maven和Gradle中的依赖坐标。###方法一:使用addAll()方法这是最简单的方 ...
在Java中,将集合转换为数组有多种方式,我将为你介绍其中四种常见的方法,并提供相应的示例代码。示例代码:###方法二:使用toArray方 ...
Java Map(映射) 是用来存放键/值对的接口。如果提供了键,就能够快速查找相应的存值。Java 类库为映射提供了两个通用的实现:Has ...
以下是一些常见的去重集合的实现方式,包括步骤流程、示例代码以及可能的第三方库依赖。示例代码:###第三方库依赖以上实现方式都不需要额外的第三 ...