温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Stream API的终端操作有哪些

发布时间:2025-02-13 21:00:14 来源:亿速云 阅读:146 作者:小樊 栏目:编程语言

Stream API 的终端操作主要包括以下几种:

1. forEach

  • 对流中的每个元素执行给定的操作。
  • 不返回任何结果。
list.stream().forEach(System.out::println);

2. toArray

  • 将流转换为数组。
  • 可以指定数组的类型。
Integer[] array = list.stream().toArray(Integer[]::new);

3. reduce

  • 使用指定的二元操作符将流中的元素组合成一个值。
  • 可以提供初始值。
int sum = list.stream().reduce(0, Integer::sum);

4. collect

  • 将流中的元素累积到一个可变的结果容器中。
  • 最常用的收集器包括 toList(), toSet(), 和 toMap()
List<String> list = Stream.of("a", "b", "c").collect(Collectors.toList());
Set<String> set = Stream.of("a", "b", "c").collect(Collectors.toSet());
Map<String, Integer> map = Stream.of("a", "b", "c")
                                  .collect(Collectors.toMap(s -> s, s -> s.length()));

5. min

  • 返回流中的最小元素。
  • 需要提供比较器。
Optional<String> minElement = list.stream().min(String::compareTo);

6. max

  • 返回流中的最大元素。
  • 需要提供比较器。
Optional<String> maxElement = list.stream().max(String::compareTo);

7. count

  • 返回流中元素的数量。
long count = list.stream().count();

8. anyMatch

  • 检查流中是否有任何元素匹配给定的谓词。
  • 返回布尔值。
boolean anyMatch = list.stream().anyMatch(s -> s.startsWith("a"));

9. allMatch

  • 检查流中的所有元素是否都匹配给定的谓词。
  • 返回布尔值。
boolean allMatch = list.stream().allMatch(s -> s.length() > 0);

10. noneMatch

  • 检查流中是否没有任何元素匹配给定的谓词。
  • 返回布尔值。
boolean noneMatch = list.stream().noneMatch(s -> s.isEmpty());

11. findFirst

  • 返回流中的第一个元素。
  • 返回 Optional 类型。
Optional<String> firstElement = list.stream().findFirst();

12. findAny

  • 返回流中的任意一个元素。
  • 返回 Optional 类型。
Optional<String> anyElement = list.stream().findAny();

这些终端操作会触发流的计算,并产生一个结果或者副作用。需要注意的是,一旦执行了终端操作,流就会被关闭,无法再次使用。如果需要多次使用流的结果,应该在终端操作之前缓存结果。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI