List<Student> studentList = new ArrayList();
studentList.add(new Student("a", "am1", 1L, 5, new BigDecimal(3)));
studentList.add(new Student("a", "am1", 2L, 4, new BigDecimal(3)));
studentList.add(new Student("c", "am1", 3L, 3, new BigDecimal(5)));
studentList.add(new Student("b", "bm2", 4L, 3, new BigDecimal(3)));
studentList.add(new Student("b", "bm3", 4L, 6, new BigDecimal(3)));
studentList.forEach(student -> {
System.out.println(student.toString());
});
System.out.println("=========================原始数据=========================");
Map<String, List<Student>> map = studentList.stream().collect(
Collectors.groupingBy(Student::getCode));
// code 分组后 求和
for (String key : map.keySet()) {
System.out.println(key);
List<Student> list = map.get(key);
Optional<Student> student=list.stream().collect(Collectors.reducing((sum, s) -> new Student(s.code, s.name, sum.chengJi+s.chengJi, sum.age + s.age, sum.value.add(s.value))));
list.forEach(obj->{
System.out.println(obj.toString());
});
System.out.println(student.toString());
}
System.out.println(map.size());
System.out.println("========================================================");
// 组合分组 然后 List
Map<String,List<Student>> mstu=studentList.stream().collect(Collectors.groupingBy(student -> {return student.code+"#"+student.name;}));
mstu.forEach((key,values)->{
System.out.println("KEY:"+key);
System.out.println("VALUE:"+values.size());
});
System.out.println("========================filter 过滤================================");
List<Student> studentListOne=studentList.stream().filter(student->{return student.name=="am1";} ).collect(Collectors.toList());
studentListOne.forEach(student -> {
System.out.println(student.toString());
});
System.out.println("========================filter 过滤---> 分组================================");
Map<String,List<Student>> mapListFilter=studentList.stream().filter(student->{return student.name=="am1";} ).collect(Collectors.toList()).stream().collect(Collectors.groupingBy(Student::getCode,Collectors.toList()));
for (Map.Entry<String, List<Student>> mapStudent:mapListFilter.entrySet()) {
System.out.println("mapStudent:"+mapStudent.getKey());
System.out.println("====value========");
mapStudent.getValue().forEach(System.out::println);
}
System.out.println("========================sort 排个序================================");
studentList.forEach(student -> {
System.out.println(student.toString());
});
System.out.println("=排序后===");
List<Student> stuListSorted = studentList.stream().sorted((stu1,stu2)-> { return stu2.age-stu1.age;}).collect(Collectors.toList());
stuListSorted.forEach(student -> {
System.out.println(student.toString());
});
lambda处理分组汇总等功能
最新推荐文章于 2025-02-22 17:28:06 发布