MST

星途 面试题库

面试题:Java中Java流同步模式在数据处理场景中的应用

假设你有一个包含大量用户对象的Java流,每个用户对象包含姓名、年龄等信息。现在需要对这些用户按照年龄进行排序,并筛选出年龄大于30岁的用户,最后计算这些用户的平均年龄。请使用Java流同步模式实现该功能,并简要说明为什么这种场景适合使用流同步模式。
38.7万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
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));
    }
}

为什么适合使用流同步模式

  1. 简洁性:流同步模式通过链式调用的方式,以一种声明式的风格来处理数据,使得代码逻辑更加清晰简洁,相比传统的迭代处理方式,减少了很多样板代码。
  2. 可读性:代码结构清晰,从数据源(users.stream())开始,经过排序(.sorted)、筛选(.filter),最后计算平均年龄(.average),每个操作步骤一目了然,易于理解和维护。
  3. 并行性:虽然这里是同步模式,但流 API 很容易切换到并行模式,只需调用parallelStream()即可,在处理大数据量时可以充分利用多核 CPU 的优势,提高处理效率。在这个场景中,如果数据量非常大,并行处理可以显著加快排序、筛选和计算平均年龄的操作。