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
相关产品推荐
相关产品推荐

