
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免费学习笔记(深入)”;
以上就是如何使用 Java 将数据行形式转换为按班级和学生 ID 分组的列形式?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号