Java Stream操作 - 学习Java Stream操作的基本使用方法
Java Stream是Java 8引入的一种新的编程方式,其目的是将处理数据的操作集成到集合中。
Java Stream的使用类似于SQL的一些操作,例如过滤、映射、组合、聚合等。它还可以加速数据处理过程,因为它是一种惰性操作,只有在得到结果之后才会执行。
在本篇文章中,我们将学习Java Stream的基本使用方法。
Java Stream 的基本操作
Java Stream有三种基本操作,分别是创建一个流、中间操作和终止操作。我们来一一介绍。
1.创建一个流
创建一个Java Stream可以通过以下三种方法:
从一个Collection(集合)或者数组中创建。
List<String> list = Arrays.asList("Java", "C++", "Python");
Stream<String> stream = list.stream(); // 从List创建Stream
使用Java Stream中的of()方法来创建一个流。
Stream<String> stream = Stream.of("Java", "C++", "Python");
使用Stream的generate()和iterate()方法来创建一个无限流。
Stream<Integer> stream = Stream.generate(() -> ThreadLocalRandom.current().nextInt(100)); stream.limit(10).forEach(System.out::println); // 生成10个随机数并输出
2.中间操作
Java Stream提供了一系列的中间操作,可以用来筛选、转换或组合Stream。其中常见的中间操作包括:
filter() 过滤 Stream 中的元素
map() 使用指定的函数映射每个元素到新元素
flatMap() 接受一个函数作为参数,将 Stream 处理前后的二维列表转换成一维列表
limit() 返回 Stream 中的前n个元素
distinct() 返回 Stream 中的不同元素
sorted() 对 Stream 中的元素进行排序
peek() 对 Stream 中的元素执行指定操作,同时返回新 Stream
skip() 返回一个跳过前n个元素的新 Stream
例如,使用filter()方法过滤年龄大于18岁的人:
List<Person> persons = new ArrayList<>();
persons.add(new Person("Tom", 20));
persons.add(new Person("Jerry", 15));
persons.add(new Person("Jack", 19));
persons.add(new Person("Lucy", 21));
Stream<Person> stream = persons.stream();
stream.filter(p -> p.getAge() > 18).forEach(System.out::println);
3.终止操作
终止操作是指执行最终的流操作,例如将结果输出到控制台、将结果转化为List或者计算结果等等。常见的终止操作包括:
forEach() 对 Stream 中的每个元素执行指定操作
reduce() 将所有元素过滤、映射、组合或拆分成单独的元素,生成最终的结果
collect() 将 Stream 元素进行可变或不可变的归集操作,返回一个新的集合
max() 和 min() 寻找 Stream 中的最大和最小元素
count() 返回 Stream 中元素的个数
例如,使用collect()方法将满足条件的Person对象转化为List:
List<Person> persons = new ArrayList<>();
persons.add(new Person("Tom", 20));
persons.add(new Person("Jerry", 15));
persons.add(new Person("Jack", 19));
persons.add(new Person("Lucy", 21));
List<Person> adultList = persons.stream()
.filter(p -> p.getAge() > 18)
.collect(Collectors.toList());
System.out.println(adultList);
本文我们学习了Java Stream的基本操作,包括创建一个流、中间操作和终止操作。使用Java Stream可以简化集合的处理,加速数据处理过程。希望本文能帮助您了解Java Stream的基本使用方法。
