java中的stream.ifPresent(Consumer<? super T> consumer)
时间: 2024-03-01 08:55:10 浏览: 207
【Java基础笔记】Java集合流Stream.docx
Java 中的 `Stream.ifPresent(Consumer<? super T> consumer)` 方法是在一个 Optional 对象存在值时,执行指定的操作。`Stream` 是 Java 中流式处理的一个核心类,它提供了一系列的操作方法来对集合进行过滤、映射、排序等操作。`ifPresent()` 方法是在对 Optional 类型的对象进行处理时使用的。
以下是一个示例:
```java
List<String> list = Arrays.asList("Java", "Python", "C++", null);
Optional<String> optional = list.stream().filter(e -> e != null && e.startsWith("J")).findFirst();
optional.ifPresent(value -> System.out.println(value)); // 输出 "Java"
```
这段代码中,我们首先创建了一个包含字符串 "Java"、"Python"、"C++" 和 null 的列表 `list`,然后使用 `stream()` 方法将其转换为一个 `Stream` 对象。接着,使用 `filter()` 方法过滤出以 "J" 开头的字符串,并使用 `findFirst()` 方法获取第一个匹配的字符串。由于 `findFirst()` 方法返回的是一个 Optional 类型的对象,因此我们可以使用 `ifPresent()` 方法来判断该对象是否包含值,如果包含值则执行指定的操作。在这个例子中,我们使用 Lambda 表达式来输出该值。如果该对象中不包含值,则不执行任何操作。
该方法的参数是一个 `Consumer` 函数式接口,它接受一个参数,没有返回值。在这个例子中,`value -> System.out.println(value)` 就是一个 `Consumer` 函数式接口的实现。它接受一个字符串参数,将其输出到控制台。当 `optional` 对象中存在值时,该 `Consumer` 实现就会被执行,将该值输出到控制台。
阅读全文