按某个属性分组,并按另一个属性取最大
一个学生列表,来自多个班级,每个班级有若干名学生;取出每个班级中年龄最大的学生,形成一个新的列表;
return new ArrayList<>(studentList.stream() .collect(Collectors.toMap(Student::getClassId, Function.identity(), (c1, c2) -> c1.getAge() > c2.getAge() ? c1 : c2)) .values());
- 首先转为Map,以班级ID为key,该班级中年龄最大的Student对象为value;
- 取出该Map的values;
- 塞到ArrayList中并返回;