Java Stream 过滤null
Java Stream 是自 Java 8 引入的一种强大的处理集合数据的方式。通过使用 Stream,我们可以以一种更简洁、更灵活的方式对集合中的元素进行操作和处理。在实际应用中,我们经常需要过滤掉集合中的 null 值,因为 null 值往往会导致空指针异常。本文将介绍如何使用 Java Stream 过滤掉 null 值,同时提供代码示例。
什么是 Java Stream
Java Stream 是一个顺序的元素集合,它支持顺序和并行处理。Stream 不是一个数据结构,而是对数据结构进行操作的一种方式。它可以执行非常复杂的查找、过滤和映射等操作。Stream API 使用高阶函数(higher-order functions)和 lambda 表达式的方式来实现这些操作,可以大大简化代码的编写。
在 Java 中,Stream 是 java.util.stream.Stream 接口的实例。它可以通过集合或数组创建,并可以通过一系列的中间操作(intermediate operations)和终端操作(terminal operations)进行处理。
过滤null值的方法
在使用 Java Stream 进行数据处理时,经常需要过滤掉集合中的 null 值。下面介绍两种常用的过滤 null 值的方法。
1. 使用 filter 方法
Java Stream 提供了 filter 方法,它可以根据指定的条件过滤集合中的元素。我们可以使用 filter 方法结合 lambda 表达式来过滤掉 null 值。
以下是一个示例代码:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class FilterNullExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", null, "banana", null, "cherry");
List<String> filteredList = list.stream()
.filter(element -> element != null)
.collect(Collectors.toList());
System.out.println(filteredList);
}
}
在上面的示例中,我们首先创建了一个包含 null 值的字符串列表。然后使用 list.stream()
将该列表转换为 Stream 对象。接下来,我们使用 filter
方法结合 lambda 表达式 element -> element != null
来过滤掉 null 值,最后使用 collect(Collectors.toList())
将过滤后的元素收集到一个新的列表中。最终,我们打印出过滤后的列表。运行上述代码,将会输出 ["apple", "banana", "cherry"]
。
2. 使用 Objects.requireNonNull 方法
如果我们不想使用 lambda 表达式来过滤 null 值,还可以使用 Java 提供的 Objects.requireNonNull
方法。该方法接受一个对象作为参数,如果该对象为 null,则会抛出一个 NullPointerException
异常。
以下是一个示例代码:
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
public class RequireNonNullExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", null, "banana", null, "cherry");
List<String> filteredList = list.stream()
.filter(Objects::nonNull)
.collect(Collectors.toList());
System.out.println(filteredList);
}
}
在上面的示例中,我们首先创建了一个包含 null 值的字符串列表。然后使用 list.stream()
将该列表转换为 Stream 对象。接下来,我们使用 filter
方法结合 Objects::nonNull
方法引用来过滤掉 null 值,最后使用 collect(Collectors.toList())
将过滤后的元素收集到一个新的列表中。最终,我们打印出过滤后的列表。运行上述代码,将会输出 ["apple", "banana", "cherry"]
。
总结
通过使用 Stream API,我们可以以一种更简洁、更灵活的方式对集合中的元素进行操作和处理。在实际应用中,经常需要过滤掉集合中的 null 值,以避免空指针异常。本文介绍了两种常用的过滤 null 值的方法:使用 filter
方法结合 lambda 表达式,以及