因为Stream中可能会有空的情况,就像这样Stream stream8 = Stream.empty(); 如果是这样,那么findFirst()可能会返回null值,所以才用了Optional来规避空值的情况。 例如: Stream stream8 = Stream.generate(UUID.randomUUID()::toString); stream8.findFirst().ifPresent(System.out::println); 1. 2. 3、 public s...
2.4 简单结果终止流 按照前面介绍的,终止方法里面像count、max、min、findAny、findFirst、anyMatch、allMatch、noneMatch等方法,均属于这里说的简单结果终止方法。所谓简单,指的是其结果形式是数字、布尔值或者Optional对象值等。 publicvoidtestSimpleStopOptions(){List<String> ids = Arrays.asList("205","10","30...
ifPresent 用于对过滤出的数据如果存在。如果经过过滤条件后,有数据的话就可以进行修改。 1. Optional<A> firstA= AList.stream() .filter(a -> "小明".equals(a.getUserName())) .findFirst() .ifPresent(a -> { a.setUserName("明明"); }) 1. 2. 3. 4. 5. 6. 2,如果想返回集合呢。可以使用...
.findFirst(); first.ifPresent(System.out::println); // 输出结果: Alice 在这个示例中,我们创建了一个包含字符串的 List,并通过 stream() 方法将其转换为流。然后使用 findFirst 方法获取流中的第一个元素,并使用 ifPresent 方法判断 Optional 是否包含值,并进行相应的处理。 2.findAny: findAny 方法用于返回...
findFirst这是一个 termimal 兼 short-circuiting 操作,它总是返回 Stream 的第一个元素,或者空。这里比较重点的是它的返回值类型:Optional。这也是一个模仿 Scala 语言中的概念,作为一个容器,它可能含有某值,或者不包含。使用它的目的是尽可能避免 NullPointerException。清单 14. Optional 的两个用例 String...
(s -> s.length() > 2).count()); // 判断是否有元素值等于205 System.out.println(ids.stream().filter(s -> s.length() > 2).anyMatch("205"::equals)); // findFirst操作 ids.stream().filter(s -> s.length() > 2) .findFirst() .ifPresent(s -> System.out.println("findFirst:" ...
然后使用 filter 方法筛选出偶数,再使用 findAny 方法获取任意一个偶数,最后使用 ifPresent 方法判断 Optional 是否包含值,并进行相应的处理。 需要注意的是,findAny 在并行流中会更有优势,因为在多线程处理时,可以返回最先找到的元素,提高效率。而在顺序流中,findAny 的性能与 findFirst 相当。 统计操作(count、max...
- findFirst:在找到第一个元素后立即返回。 - findAny:在找到任意一个元素后立即返回。 Optional类 1、创建Optional对象: - Optional.empty():创建一个空的Optional对象。 - Optional.of(value):创建一个包含指定非空值的Optional对象。 - Optional.ofNullable(value):创建一个包含指定值的Optional对象,如果值为空...
Stream的findFirst方法在此流中查找第一个元素作为Optional。 如果流中没有元素,findFirst返回空的Optional。 如果流没有顺序,那么findFirst可以选择任何元素。 如果findFirst选择的元素为null,它将抛出NullPointerException。
3)、findFirst:查询流中第一个元素 4)、findAny:找到所有匹配的元素 5)、anyMath:是否含有匹配元素 6)、allMatch:是否流中的元素都匹配 4、Optional 类型: 5、收集结果: 6、分组和分片: 1)、使用 groupBy 进行分类: 2)、partitionBy: 3)、downstream 指定类型: ...