◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
java 中将数据行形式转换为列形式
给定一个包含班级、学生id、科目和分数的数据集,要求将其转换为按班级和学生id分组,科目和分数作为列的形式。
要实现此转换,可以使用 java 的 stream、collect 和 groupingby 操作:
// 源数据 List<Record> records = ... // 按班级和学生 ID 分组 Map<String, Map<Integer, List<Record>>> groupedRecords = records.stream() .collect(groupingBy(Record::getClass, groupingBy(Record::getStudentId))); // 创建结果列表 List<Result> results = new ArrayList<>(); // 遍历分组后的数据,构建结果 for (Map.Entry<String, Map<Integer, List<Record>>> classEntry : groupedRecords.entrySet()) { for (Map.Entry<Integer, List<Record>> studentEntry : classEntry.getValue().entrySet()) { Result result = new Result(); result.setClass(classEntry.getKey()); result.setStudentId(studentEntry.getKey()); // 填充科目和分数 for (Record record : studentEntry.getValue()) { switch (record.getSubject()) { case "English": result.setEnglish(record.getScore()); break; case "Math": result.setMath(record.getScore()); break; case "PE": result.setPe(record.getScore()); break; } } // 添加到结果列表 results.add(result); } }
最终,results 列表将包含按班级和学生id分组的记录,科目和分数作为列形式展示。
立即学习“Java免费学习笔记(深入)”;
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。