applogo.png
简介

在现代Java开发中,处理集合数据是一项常见的任务。从简单的迭代到复杂的多步骤处理逻辑,如何以一种更简洁、更具表现力的方式进行集合操作变得尤为重要。Java 8引入了Stream API,它为集合数据的操作提供了一种全新的方法,使得开发者可以写出更加优雅且高效的代码。

什么是Stream?
Stream(流)是一种来自数据源的元素序列。这些元素可以通过管道(pipelines)进行一系列称为中间操作(intermediate operations)的转换,最终执行一个终止操作(terminal operation),比如遍历所有元素、返回单个结果或生成一个新集合。

Stream的基本操作
创建Stream

通过集合(如List, Set等)的方法stream()或parallelStream()。

使用Arrays中的静态方法stream()来获取数组流。

创建无限流:IntStream.iterate(0, n -> n + 1) 或 Stream.generate(() -> new Object())。

中间操作

过滤(Filtering):使用filter(Predicate<T> predicate)方法,只保留匹配给定条件的元素。

映射(Mapping):使用map(Function<T, R> mapper)方法,将流中的每个元素都转换成另一个形式或提取信息。

归约(Reduction):使用reduce(T identity, BinaryOperator<T> accumulator)方法,对流中的元素进行汇总操作,例如求和、查找最大值或最小值等。

终止操作

forEach(Consumer<T> action):遍历流中的每一个元素。

collect(Collector<T, A, R> collector):收集流中的元素并返回结果。

toArray():将流转换为数组。

示例代码
假设我们有一个Person类,包含姓名和年龄属性,下面展示如何使用Stream API来进行过滤、映射和归约操作:

java
深色版本

1class Person {
2 private String name;
3 private int age;
4
5 // 构造函数,getters 和 setters 省略
6
7 public Person(String name, int age) {
8 this.name = name;
9 this.age = age;
10 }
11}
12
13public class StreamExample {
14 public static void main(String[] args) {
15 List<Person> people = Arrays.asList(
16 new Person("Alice", 30),
17 new Person("Bob", 25),
18 new Person("Charlie", 35)
19 );
20
21 // 过滤年龄大于30的人
22 List<Person> adults = people.stream()
23 .filter(person -> person.getAge() > 30)
24 .collect(Collectors.toList());
25
26 // 映射获取每个人的名字
27 List<String> names = people.stream()
28 .map(Person::getName)
29 .collect(Collectors.toList());
30
31 // 归约求总年龄
32 int totalAge = people.stream()
33 .mapToInt(Person::getAge)
34 .sum();
35 }
36}
总结
使用Java Stream API可以显著提高代码的可读性和效率。通过上述例子,我们可以看到Stream API是如何简化了集合操作的过程。无论是过滤特定条件的数据、提取所需信息还是进行数据汇总,Stream API都提供了强大的工具。随着实践经验的增长,开发者可以更好地利用这一特性来编写更为高效、简洁和易于维护的代码。 

二维码

使用Java Stream简化集合操作:过滤、映射与归约

保存图片,微信扫一扫

公众号:

上一页 下一页
其他信息
行业: 招代理商
地区:
时间:2024-08-30
标签:

上一篇:Spring Boot实战:基于职责链模式处理请求链中的多个处理器

下一篇:“断亲”背后,年轻人与亲戚的代际误会

赞 0
分享
猜你喜欢

账号登录,或者注册个账号?