Java8 Stream流的常用方法是什么

发布时间:2023-05-06 09:11:29 作者:iii
来源:亿速云 阅读:133

Java8 Stream流的常用方法是什么

Java 8引入了Stream API,它提供了一种高效且易于使用的方式来处理集合数据。Stream API允许开发者以声明式的方式处理数据,并且可以利用多核架构进行并行处理。本文将介绍Java 8中Stream流的常用方法。

1. 创建Stream

在开始使用Stream之前,首先需要创建一个Stream对象。常见的创建方式有以下几种:

1.1 从集合创建

List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();

1.2 从数组创建

String[] array = {"a", "b", "c"};
Stream<String> stream = Arrays.stream(array);

1.3 使用Stream.of创建

Stream<String> stream = Stream.of("a", "b", "c");

1.4 使用Stream.generate创建无限流

Stream<String> stream = Stream.generate(() -> "element").limit(10);

1.5 使用Stream.iterate创建无限流

Stream<Integer> stream = Stream.iterate(0, n -> n + 2).limit(10);

2. 中间操作

中间操作是对Stream进行处理并返回一个新的Stream的操作。常见的中间操作包括:

2.1 filter

filter方法用于过滤元素,保留满足条件的元素。

List<String> list = Arrays.asList("a", "b", "c", "d");
List<String> result = list.stream()
                          .filter(s -> s.startsWith("a"))
                          .collect(Collectors.toList());

2.2 map

map方法用于将元素映射为另一种形式。

List<String> list = Arrays.asList("a", "b", "c");
List<String> result = list.stream()
                          .map(String::toUpperCase)
                          .collect(Collectors.toList());

2.3 flatMap

flatMap方法用于将多个Stream合并为一个Stream

List<List<String>> list = Arrays.asList(
    Arrays.asList("a", "b"),
    Arrays.asList("c", "d")
);
List<String> result = list.stream()
                          .flatMap(Collection::stream)
                          .collect(Collectors.toList());

2.4 distinct

distinct方法用于去除重复元素。

List<String> list = Arrays.asList("a", "b", "a", "c");
List<String> result = list.stream()
                          .distinct()
                          .collect(Collectors.toList());

2.5 sorted

sorted方法用于对元素进行排序。

List<String> list = Arrays.asList("c", "a", "b");
List<String> result = list.stream()
                          .sorted()
                          .collect(Collectors.toList());

2.6 limit

limit方法用于限制Stream中元素的数量。

List<String> list = Arrays.asList("a", "b", "c", "d");
List<String> result = list.stream()
                          .limit(2)
                          .collect(Collectors.toList());

2.7 skip

skip方法用于跳过前N个元素。

List<String> list = Arrays.asList("a", "b", "c", "d");
List<String> result = list.stream()
                          .skip(2)
                          .collect(Collectors.toList());

3. 终端操作

终端操作是Stream处理的最后一步,它会触发Stream的执行并返回一个结果。常见的终端操作包括:

3.1 forEach

forEach方法用于对每个元素执行操作。

List<String> list = Arrays.asList("a", "b", "c");
list.stream().forEach(System.out::println);

3.2 collect

collect方法用于将Stream中的元素收集到一个集合中。

List<String> list = Arrays.asList("a", "b", "c");
List<String> result = list.stream()
                          .collect(Collectors.toList());

3.3 reduce

reduce方法用于将Stream中的元素归约为一个值。

List<Integer> list = Arrays.asList(1, 2, 3, 4);
Optional<Integer> result = list.stream()
                               .reduce(Integer::sum);

3.4 count

count方法用于计算Stream中元素的数量。

List<String> list = Arrays.asList("a", "b", "c");
long count = list.stream().count();

3.5 anyMatch / allMatch / noneMatch

这些方法用于检查Stream中的元素是否满足某个条件。

List<String> list = Arrays.asList("a", "b", "c");
boolean anyMatch = list.stream().anyMatch(s -> s.startsWith("a"));
boolean allMatch = list.stream().allMatch(s -> s.startsWith("a"));
boolean noneMatch = list.stream().noneMatch(s -> s.startsWith("a"));

3.6 findFirst / findAny

findFirst方法用于获取Stream中的第一个元素,findAny方法用于获取Stream中的任意一个元素。

List<String> list = Arrays.asList("a", "b", "c");
Optional<String> first = list.stream().findFirst();
Optional<String> any = list.stream().findAny();

4. 并行流

Java 8的Stream API支持并行处理,可以通过parallelStream方法将Stream转换为并行流。

List<String> list = Arrays.asList("a", "b", "c");
List<String> result = list.parallelStream()
                          .map(String::toUpperCase)
                          .collect(Collectors.toList());

5. 总结

Java 8的Stream API提供了一种高效且易于使用的方式来处理集合数据。通过Stream的中间操作和终端操作,开发者可以轻松地对数据进行过滤、映射、排序、归约等操作。此外,Stream API还支持并行处理,可以充分利用多核架构提高处理效率。掌握Stream的常用方法,可以显著提升代码的可读性和性能。

推荐阅读:
  1. Java泛型怎么应用
  2. Ubuntu如何配置默认Java使用哪个

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

java stream

上一篇:Java怎么实现图的遍历

下一篇:java中BigDecimal是干什么的

相关阅读

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

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