java lambda分组后再排序
时间: 2023-09-01 13:11:04 浏览: 102
可以使用Java 8中的Stream API和lambda表达式来实现分组后再排序。
假设有一个Student类,包含姓名(name)、年龄(age)和成绩(score)属性,现在需要将学生按照年龄分组后,再按照成绩进行排序。可以使用如下代码实现:
```java
List<Student> students = new ArrayList<>();
// 假设这里有很多个学生对象
Map<Integer, List<Student>> groupMap = students.stream()
.collect(Collectors.groupingBy(Student::getAge)); // 按照年龄分组
groupMap.forEach((age, list) -> {
List<Student> sortedList = list.stream()
.sorted(Comparator.comparingDouble(Student::getScore).reversed()) // 按照成绩降序排序
.collect(Collectors.toList());
System.out.println("年龄为" + age + "的学生列表:" + sortedList);
});
```
首先使用`Collectors.groupingBy`方法按照年龄对学生进行分组,得到一个年龄到学生列表的映射。然后使用`forEach`方法遍历每个分组,对每个分组内的学生列表进行按照成绩降序排序,最终输出每个年龄分组内的学生列表。
注意,这里使用了lambda表达式和方法引用简化了代码,可以根据具体情况进行调整。
阅读全文