gpt4 book ai didi

java - 我试图找到每个部门的最新员工的工资。一步使用 java 8

转载 作者:行者123 更新时间:2023-12-04 08:48:25 26 4
gpt4 key购买 nike

考虑到员工 ID 会增加,目的是找到部门中最新员工的薪水。
我已经编写了一个两步代码,我正在尝试找到一个可以使用 java8 一步完成此操作的解决方案。
我的流程是:

  • 获取“部门”的 map :基于该部门最大员工 ID 的“最新员工”
  • 使用以前的 map 创建“部门”:“最新员工的工资”(这是输出)

  • 是否可以一步完成?
        public static void main(String[] args) {
    List<Employee> employees = new ArrayList<>();
    Employee e1 = new Employee(1, 1000, "a1", "A");
    Employee e2 = new Employee(2, 1010, "b1", "A");
    Employee e3 = new Employee(3, 1000, "a1", "B");
    Employee e4 = new Employee(4, 500, "b2", "B");
    Employee e5 = new Employee(5, 2000, "a1", "C");
    Employee e6 = new Employee(6, 5000, "b2", "C");
    employees.add(e1);
    employees.add(e2);
    employees.add(e3);
    employees.add(e4);
    employees.add(e5);
    employees.add(e6);
    //This Map will contain Department and The newest Employee in that Department.
    Map<String, Employee> retVal = employees.stream()
    .collect(groupingBy(
    e -> e.getDepartment(),
    collectingAndThen(maxBy(comparingInt(e -> e.getEmployeeId())), Optional::get)
    ));
    //This Map will use the previous map to construct a combination of "Department" : "Salary of the newest Member"
    Map<String, Integer> map = new HashMap<>();
    retVal.entrySet().forEach(stringEmployeeEntry -> {
    map.put(stringEmployeeEntry.getKey(), stringEmployeeEntry.getValue().getSalary());
    });
    }
    输出
    {
    "a1" : 2000,
    "b1" : 1010,
    "b2" : 5000,
    }

    最佳答案

    您可以直接在collectingAndThen中映射工资来自 Employee目的

    Map<String, Integer> retVal = employees.stream()
    .collect(Collectors.groupingBy(
    e -> e.getDepartment(),
    Collectors.collectingAndThen(
    Collectors.maxBy(Comparator.comparingInt(e -> e.getEmployeeId())),
    e -> e.get().getSalary())
    ));

    关于java - 我试图找到每个部门的最新员工的工资。一步使用 java 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64194436/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com