【发布时间】:2020-07-05 07:49:51
【问题描述】:
我有一份员工名单
[employeeId=22, employeeName= Rajan Anand, department= Engineering, salary=1600000]
[employeeId=23, employeeName= Swati Patil, department= Testing, salary=800000]
[employeeId=27, employeeName= Vijay Chawda, department= Engineering, salary=800000]
[employeeId=29, employeeName= Basant Mahapatra, department= Engineering, salary=600000]
[employeeId=32, employeeName= Ajay Patel, department= Testing, salary=350000]
[employeeId=34, employeeName= Swaraj Birla, department= Testing, salary=350000]
我想在Map<String,Integer> 中收集该部门最高薪员工的部门和 ID。
样本输出:
Engineering 22
Testing 23
尝试的代码
Map<String, Optional<Employee>> retVal = new HashMap<String, Optional<Employee>>();
retVal = employeeList.stream().collect(Collectors.groupingBy(Employee::getDepartment,Collectors.maxBy(Comparator.comparing(Employee::getSalary))));
我已经添加了这个实现,我将部门作为键和最高薪水的员工作为值,但我只想要员工 ID 作为值。
【问题讨论】:
标签: java java-8 collectors