MST

星途 面试题库

面试题:Java Stream流在复杂对象集合处理中的应用

假设有一个包含多个员工对象的列表,员工对象包含姓名、年龄、薪资等属性。要求使用Java Stream流实现以下功能:筛选出年龄大于30岁且薪资高于10000的员工,按照薪资从高到低排序,然后取出前3名员工的姓名,并将这些姓名拼接成一个以逗号分隔的字符串返回。请编写实现该功能的Java代码。
25.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

class Employee {
    private String name;
    private int age;
    private double salary;

    public Employee(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public double getSalary() {
        return salary;
    }
}

public class Main {
    public static String processEmployees(List<Employee> employees) {
        return employees.stream()
               .filter(employee -> employee.getAge() > 30 && employee.getSalary() > 10000)
               .sorted(Comparator.comparingDouble(Employee::getSalary).reversed())
               .limit(3)
               .map(Employee::getName)
               .collect(Collectors.joining(","));
    }

    public static void main(String[] args) {
        List<Employee> employees = new ArrayList<>();
        employees.add(new Employee("Alice", 35, 12000));
        employees.add(new Employee("Bob", 28, 9000));
        employees.add(new Employee("Charlie", 32, 11000));
        employees.add(new Employee("David", 38, 13000));
        employees.add(new Employee("Eve", 25, 8000));
        employees.add(new Employee("Frank", 33, 10500));

        String result = processEmployees(employees);
        System.out.println(result);
    }
}