直接上代码,也给自己提醒一下
取值用SQL:
SELECT
class_name
, class_id
, stu_name
, stu_id
, groups_name
, groups_id
, sex
FROM
class_tb
WHERE 1=1
AND class_id ='202001'
ORDER BY groups_id, stu_id
sql中取到的结果,存到classList 中。
1、以 【GroupId】分组。此时map的key就是【GroupId】
Map<String, List<ClassName>> GroupIdMap = classList
.stream()
.collect(Collectors.groupingBy(ClassName::getGroupId));
注意:因为sql中排序中有使用 group_Id 字段,此时分组之后,因为map是无序的,所以此时的map分组之后的顺序就产生了变化,后续处理如果有和排序有关的话,就要格外注意。
2、以 【sex】分组。此时map的key就是【sex】
Map<String, List<ClassName>> GroupIdMap = classList
.stream()
.collect(Collectors.groupingBy(ClassName::getSex));
因为sql中的排序没有用到 sex ,所以分组之后,顺序也不会出现变化。
3、以 【sex + GroupId】分组。此时map的key就是【sex + GroupId】
Map<String, List<ClassName>> GroupIdMap = classList
.stream()
.collect(Collectors.groupingBy(cls -> cls.getSex + cls.getGroupId));
注意:此时的顺序依然会发生变化!!!