作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑到员工 ID 会增加,目的是找到部门中最新员工的薪水。
我已经编写了一个两步代码,我正在尝试找到一个可以使用 java8 一步完成此操作的解决方案。
我的流程是:
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/
这是电话面试中提出的第一个问题? 员工表有 ID、姓名、薪水、部门列。给我按部门列出的最高工资。 我的答案:按部门从员工组中选择最高(薪水)、部门。 后续问题:现在,在上面的查询中,我只想获取平均工资
当我编译它时,我收到错误,操作符号有问题,行代码错误: Pay = (40 * Rate) + (( Hours - 40) * (1.5 * Rate)); 下面是我使用的完整代码。 import
我是一名优秀的程序员,十分优秀!