You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 11优化师生数据转唯一值Map:替代两次toMap的方案

师生数据映射优化方案请求

原始师生JSON数据

{ 
 "record_id" : "r01",
 "teacherNstudents": [
                      {
                       "teacher" : {
                                    "name" : "tony",
                                    "tid"  : "T01"
                                   },
                       "student" : {
                                    "name" : "steve",
                                    "sid" : "S01"
                                   }
                      },
                      {
                       "teacher" : {
                                    "name" : "tony",
                                    "tid"  : "T01"
                                   },
                       "student" : {
                                    "name" : "natasha",
                                    "sid" : "S02"
                                   }
                      },
                      {
                       "teacher" : {
                                    "name" : "tony",
                                    "tid"  : "T01"
                                   },
                       "student" : {
                                    "name" : "bruce",
                                    "sid" : "S03"
                                   }
                      },
                      {
                       "teacher" : {
                                    "name" : "tony",
                                    "tid"  : "T01"
                                   },
                       "student" : {
                                    "name" : "victor",
                                    "sid" : "S04"
                                   }
                      },
                      {
                       "teacher" : {
                                    "name" : "henry",
                                    "tid"  : "T02"
                                   },
                       "student" : {
                                    "name" : "jack",
                                    "sid" : "S05"
                                   }
                      },
                      {
                       "teacher" : {
                                    "name" : "henry",
                                    "tid"  : "T02"
                                   },
                       "student" : {
                                    "name" : "robert",
                                    "sid" : "S06"
                                   }
                      }
                     ]
}

目标输出格式

要求生成去重后的映射,每个教师仅对应一个学生,输出格式如下:

[ {"S01", "T01"} , {"S05","T02"} ]

现有实现代码

当前通过两次Collectors.toMap实现需求:

var firstMap = records.getTeacherNstudents()
                      .stream()
                      .collect(Collectors.toMap(tS -> tS.getTeacher().getTid(),
                                                tS -> tS.getStudent().getSid(),
                                                (a1, a2) -> a1));
return firstMap.entrySet()
               .stream()
               .collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));

优化需求

希望使用Collectors.groupingBy优化上述实现,寻求更简洁高效的方案。


内容的提问来源于stack exchange,提问作者Suraj Muraleedharan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 07:40:40