如何从Java Stream中移除null值?
移除Java Stream中的null值
在Java中移除Stream里的null值,最直接高效的方式是借助filter操作结合非空判断逻辑,以下是两种常用实现方式:
方法一:使用Objects::nonNull方法引用
这是推荐的规范写法,Objects.nonNull()是Java 8+提供的工具方法,安全且简洁地完成非空校验:
import java.util.Objects; import java.util.stream.Stream; public class StreamNonNullExample { public static void main(String[] args) { // 包含null的原始Stream Stream<String> originalStream = Stream.of("apple", null, "banana", null, "cherry"); // 过滤null后的Stream Stream<String> nonNullStream = originalStream.filter(Objects::nonNull); // 执行终端操作验证结果 nonNullStream.forEach(System.out::println); // 输出 apple、banana、cherry } }
方法二:使用Lambda表达式显式判断
如果你偏好更直观的逻辑写法,也可以直接用lambda表达式完成非空判断,效果和上面完全一致:
Stream<String> nonNullStream = originalStream.filter(e -> e != null);
需要注意:Stream操作是惰性执行的,只有当调用forEach、collect这类终端操作时,过滤逻辑才会实际触发执行。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

