JDK8的新特性--lambda表达式--分组管理

一. 测试对象

1 @Data
2 public class Grade {
3     private String gradeName;   // 年级名称
4     private String schoolName;  // 学校名称
5     private Integer groupId;  // 学校年级属于某个分组
6 }

 

 

二. 测试方法

 1 public List<Map<String, Object>> lambdaTest(){
 2         Grade gradeOne = new Grade();
 3         gradeOne.setGradeName("三年二班");
 4         gradeOne.setSchoolName("中国十中");
 5         gradeOne.setGroupId(1);
 6         Grade gradeTwo = new Grade();
 7         gradeTwo.setGradeName("二年级一班");
 8         gradeTwo.setSchoolName("中国十六中");
 9         gradeTwo.setGroupId(2);
10         Grade gradeThree = new Grade();
11         gradeThree.setGradeName("四年级三班");
12         gradeThree.setSchoolName("中国一百零八中");
13         gradeThree.setGroupId(1);
14         Grade gradeFour = new Grade();
15         gradeFour.setGradeName("六年级六班");
16         gradeFour.setSchoolName("中国二十三中");
17         gradeFour.setGroupId(2);
18 
19         List<Grade> gradeList = new ArrayList<>();
20         gradeList.add(gradeOne);
21         gradeList.add(gradeTwo);
22         gradeList.add(gradeThree);
23         gradeList.add(gradeFour);
24 
25         Map<Integer, List<Grade>> gradeMap = gradeList.stream().collect(Collectors.groupingBy(Grade::getGroupId));
26         System.out.println(gradeMap.toString());
27 
28         List<Map<String, Object>> responseList = new ArrayList<>();
29         gradeMap.forEach((key,value) -> {
30             Map<String, Object> map = new HashMap<>();
31             map.put("groupId", key);
32             map.put("list", listConvertMap(value));
33             responseList.add(map);
34         });
35 
36         return responseList;
37 }
38 
39 List<Map<String, Object>> listConvertMap(List<Grade> list){
40         List<Map<String, Object>> responseList = new ArrayList<>();
41         for (Grade grade : list) {
42             Map<String, Object> map = new HashMap<>();
43             map.put("schoolName", grade.getSchoolName());
44             map.put("gradeName", grade.getGradeName());
45             responseList.add(map);
46         }
47         return responseList;
48 }

 

 

三. 测试结果

 

四. 主要方法,lambda

/* 根据groupId进行一个区分 */
Map<Integer, List<Grade>> gradeMap = gradeList.stream().collect(Collectors.groupingBy(Grade::getGroupId));
// 结果 -> {1=[Grade(gradeName=三年二班, schoolName=中国十中, groupId=1), Grade(gradeName=四年级三班, schoolName=中国一百零八中, groupId=1)]
      , 2=[Grade(gradeName=二年级一班, schoolName=中国十六中, groupId=2), Grade(gradeName=六年级六班, schoolName=中国二十三中, groupId=2)]}


 

posted @ 2021-04-28 10:07  知晓汝名,吓吾一跳!  阅读(201)  评论(0)    收藏  举报
/* 鼠标点击求赞文字特效 */