import java.util.ArrayList;
import java.util.List;
import java.util.OptionalDouble;
class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
List<User> users = new ArrayList<>();
users.add(new User("Alice", 25));
users.add(new User("Bob", 35));
users.add(new User("Charlie", 40));
users.add(new User("David", 28));
OptionalDouble average = users.stream()
.sorted((u1, u2) -> Integer.compare(u1.getAge(), u2.getAge()))
.filter(u -> u.getAge() > 30)
.mapToInt(User::getAge)
.average();
average.ifPresent(avg -> System.out.println("平均年龄: " + avg));
}
}
为什么适合使用流同步模式
- 简洁性:流同步模式通过链式调用的方式,以一种声明式的风格来处理数据,使得代码逻辑更加清晰简洁,相比传统的迭代处理方式,减少了很多样板代码。
- 可读性:代码结构清晰,从数据源(
users.stream()
)开始,经过排序(.sorted
)、筛选(.filter
),最后计算平均年龄(.average
),每个操作步骤一目了然,易于理解和维护。
- 并行性:虽然这里是同步模式,但流 API 很容易切换到并行模式,只需调用
parallelStream()
即可,在处理大数据量时可以充分利用多核 CPU 的优势,提高处理效率。在这个场景中,如果数据量非常大,并行处理可以显著加快排序、筛选和计算平均年龄的操作。