相关文章推荐

java 8 stream findfirst ifpresent

Java 8 中 Stream 类引入了许多新的函数式操作,其中包括 findFirst() 和 ifPresent()。

findFirst() 是 Stream 中的一个终止操作,它返回 Stream 中的第一个元素(如果 Stream 不为空),否则返回一个 Optional 对象。

ifPresent() 是 Optional 类的一个方法,它接受一个 Consumer 接口的实例作为参数,并在 Optional 对象非空时执行该接口的实现。

因此,结合起来使用,可以通过 Stream 找到第一个符合条件的元素,并对其执行相应的操作。示例代码如下:

List<String> list = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
list.stream()
    .filter(s -> s.startsWith("b"))
    .findFirst()
    .ifPresent(s -> System.out.println("找到第一个以 b 开头的单词:" + s));

上述代码中,我们将一个字符串列表转换为一个 Stream,然后使用 filter() 方法筛选出以 "b" 开头的单词,接着使用 findFirst() 方法获取第一个符合条件的单词(如果有的话),最后使用 ifPresent() 方法对该单词执行相应的操作,即输出一个信息。

需要注意的是,如果 Stream 中没有符合条件的元素,findFirst() 方法会返回一个空的 Optional 对象,因此在使用 ifPresent() 方法之前,需要先对 Optional 对象进行空值检查,以避免 NullPointerException 异常。

  •  
    推荐文章