Java8中Stream怎么使用

发布时间:2022-09-20 15:24:25 作者:iii
来源:亿速云 阅读:195

Java8中Stream怎么使用

Java 8引入了Stream API,它为处理集合数据提供了一种更高效、更简洁的方式。Stream 可以看作是对集合数据进行操作的流水线,支持链式调用和并行处理。本文将介绍Java 8中Stream的基本使用方法。

1. 什么是Stream?

Stream 是Java 8中引入的一个新特性,它允许你以声明式的方式处理集合数据。Stream 不是数据结构,而是对数据源(如集合、数组等)进行操作的工具。Stream 操作可以分为两类:

2. 创建Stream

在Java 8中,可以通过多种方式创建Stream

2.1 从集合创建

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

2.2 从数组创建

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

2.3 使用Stream.of()

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

2.4 使用Stream.generate()

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

2.5 使用Stream.iterate()

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

3. 中间操作

中间操作是对Stream进行处理的步骤,返回一个新的Stream,允许链式调用。

3.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());
// result: ["a"]

3.2 map()

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

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

3.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());
// result: ["a", "b", "c", "d"]

3.4 sorted()

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

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

3.5 distinct()

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

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

4. 终端操作

终端操作是Stream处理的最后一步,返回一个非Stream的结果。

4.1 forEach()

forEach() 方法用于遍历Stream中的每个元素。

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

4.2 collect()

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

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

4.3 reduce()

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

List<Integer> list = Arrays.asList(1, 2, 3);
Optional<Integer> result = list.stream()
                               .reduce((a, b) -> a + b);
// result: 6

4.4 count()

count() 方法用于统计Stream中的元素个数。

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

4.5 anyMatch() / allMatch() / noneMatch()

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

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

boolean allMatch = list.stream().allMatch(s -> s.startsWith("a"));
// allMatch: false

boolean noneMatch = list.stream().noneMatch(s -> s.startsWith("d"));
// noneMatch: true

5. 并行Stream

Java 8中的Stream支持并行处理,可以通过parallelStream()方法创建并行Stream

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

并行Stream会自动将任务分配到多个线程上执行,适合处理大量数据。

6. 总结

Java 8中的Stream API提供了一种高效、简洁的方式来处理集合数据。通过Stream,你可以轻松地进行过滤、映射、排序、归约等操作。Stream还支持并行处理,能够充分利用多核CPU的性能。掌握Stream的使用,可以大大提升代码的可读性和执行效率。

推荐阅读:
  1. 如何使用Java8 Stream API
  2. 如何在java8中使用Stream API

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

java stream

上一篇:多版本node怎么安装和切换

下一篇:Java MyBatis是怎么执行一条SQL语句的

相关阅读

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

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