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)]}

浙公网安备 33010602011771号