MST

星途 面试题库

面试题:Java中Stream filter复杂条件过滤 - 高级题

现有一个List<Map<String, Object>>,其中每个Map代表一个员工信息,包含键值对如:{"name":"张三","age":25,"salary":5000,"department":"研发部"}。要求使用Stream的filter方法,筛选出年龄大于30岁,薪资大于8000且部门为“销售部”的员工信息,并将结果以List<Map<String, Object>>形式返回,写出完整代码。
48.5万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

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

public class EmployeeFilter {
    public static List<Map<String, Object>> filterEmployees(List<Map<String, Object>> employeeList) {
        return employeeList.stream()
               .filter(map -> (Integer) map.get("age") > 30
                        && (Integer) map.get("salary") > 8000
                        && "销售部".equals(map.get("department")))
               .collect(Collectors.toList());
    }
}

你可以这样调用这个方法:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        List<Map<String, Object>> employeeList = new ArrayList<>();
        Map<String, Object> employee1 = new HashMap<>();
        employee1.put("name", "张三");
        employee1.put("age", 25);
        employee1.put("salary", 5000);
        employee1.put("department", "研发部");

        Map<String, Object> employee2 = new HashMap<>();
        employee2.put("name", "李四");
        employee2.put("age", 35);
        employee2.put("salary", 9000);
        employee2.put("department", "销售部");

        employeeList.add(employee1);
        employeeList.add(employee2);

        List<Map<String, Object>> result = EmployeeFilter.filterEmployees(employeeList);
        System.out.println(result);
    }
}