Java Stream是Java 8引入的一种流式处理API,可以用于处理集合或数组等元素序列。其中,filter()方法是Stream API中的一种常用方法,用于根据指定的条件过滤元素。
filter()方法返回一个新的Stream对象,其中包含了原始Stream对象中满足指定条件的元素。findFirst()方法是Stream API中的一个终止操作,它返回一个Optional对象,其中包含了原始Stream对象中的第一个元素,如果原始Stream对象为空,则返回一个空的Optional对象。
如果在findFirst()方法之前使用了filter()方法,则会返回满足指定条件的第一个元素。如果原始Stream对象为空或没有满足条件的元素,则返回一个空的Optional对象。
如果希望在没有满足条件的元素时抛出异常,可以使用orElseThrow()方法。orElseThrow()方法接受一个Supplier接口的实例作为参数,用于生成一个指定类型的异常对象,当Optional对象为空时,抛出该异常对象。
示例代码如下:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Integer result = list.stream()
.filter(i -> i > 3)
.findFirst()
.orElseThrow(() -> new RuntimeException("No element found!"));
System.out.println(result);
在这个例子中,我们先使用filter()方法过滤出大于3的元素,然后使用findFirst()方法获取第一个满足条件的元素。最后,如果没有找到任何元素,我们使用orElseThrow()方法抛出一个运行时异常,提示没有找到任何元素。