我有一份员工名单如下:
[Employee{id="1", NID="A123", wages=5000},
Employee{id="2", NID="B123", wages=1000},
Employee{id="3", NID="C123", wages=2000},
Employee{id="4", NID="C123", wages=3000}]
Run Code Online (Sandbox Code Playgroud)
我需要能够仅检索唯一的对象,并且在 NID 相同的情况下,我需要检索具有最大 Id 的对象。所以最终的列表应该是这样的
[Employee{id="1", NID="A123", wages=5000},
Employee{id="2", NID="B123", wages=1000},
Employee{id="4", NID="C123", wages=3000}]
Run Code Online (Sandbox Code Playgroud)
我知道可以使用嵌套 for 循环来完成此操作,但我想使用 Java 流来完成此操作。我可以通过使用 group by 找到列表中重复的员工,但我仍然不知道如何像上面那样获取列表。
Map<String, List<Employee>> groupByNid = employeeList.stream().collect(Collectors.groupingBy(Employee::getNID));
Run Code Online (Sandbox Code Playgroud)
谢谢帮忙。
阿什利
我提出以下建议:
Collection<Employee> filteredEmployees = employeeList.stream()
.collect(Collectors.toMap(
Employee::getNID, Function.identity(),
BinaryOperator.maxBy(Comparator.comparing(Employee::getID))
)).values();
Run Code Online (Sandbox Code Playgroud)