Java: Group SuggestedLevelExportDTO by EmpCode, WightLevelName, and SuggestedLevel Count
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<SuggestedLevelExportDTO> exportDTOS = // Your list of SuggestedLevelExportDTO objects
// Group by empCode
Map<String, Map<String, Map<String, Long>>> groupedDTOs = exportDTOS.stream()
.collect(Collectors.groupingBy(SuggestedLevelExportDTO::getEmpCode,
Collectors.groupingBy(SuggestedLevelExportDTO::getWightLevelName,
Collectors.groupingBy(SuggestedLevelExportDTO::getSuggestedLevel, Collectors.counting()))));
// Print the grouped results
for (Map.Entry<String, Map<String, Map<String, Long>>> entry1 : groupedDTOs.entrySet()) {
String empCode = entry1.getKey();
System.out.println('Employee Code: ' + empCode);
for (Map.Entry<String, Map<String, Long>> entry2 : entry1.getValue().entrySet()) {
String wightLevelName = entry2.getKey();
System.out.println(' Weight Level Name: ' + wightLevelName);
for (Map.Entry<String, Long> entry3 : entry2.getValue().entrySet()) {
String suggestedLevel = entry3.getKey();
Long count = entry3.getValue();
System.out.println(' Suggested Level: ' + suggestedLevel + ', Count: ' + count);
}
}
}
}
}
This code uses Java 8's stream API to group the SuggestedLevelExportDTO objects first by empCode, then by wightLevelName, and finally by suggestedLevel with the count of each suggestedLevel. The results are stored in a nested map structure where the keys are the empCode, wightLevelName, and suggestedLevel, and the values are the count of each suggestedLevel. The code then prints out the grouped results.
原文地址: https://www.cveoy.top/t/topic/qAnG 著作权归作者所有。请勿转载和采集!