以下是代码优化后的版本:
public static Map<String, Map<String, ComputeResultExportDTO>> getTotalRankingMap(final List computeResultExports) {
return computeResultExports.stream()
.filter(DistinctKeyUtil.distinctByKey(ComputeResultExportDTO::getEmpCode))
.collect(Collectors.groupingBy(ComputeResultExportDTO::getIdentity,
LinkedHashMap::new,
Collectors.collectingAndThen(Collectors.toList(), item -> {
final AtomicInteger atomicInteger = new AtomicInteger();
return item.stream()
.sorted(Comparator.comparing(ComputeResultExportDTO::getTotalScore).reversed())
.peek(map -> map.setNum(atomicInteger.incrementAndGet()))
.collect(Collectors.toList());
})))
.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
item -> item.getValue().stream()
.collect(Collectors.toMap(ComputeResultExportDTO::getEmpName,
Function.identity(),
(o, n) -> o)),
(o, n) -> o,
LinkedHashMap::new));