java stream 分组 并 不同组可以排序
时间: 2023-08-04 21:32:32 浏览: 84
可以的,Java Stream API 提供了 `Collectors.groupingBy()` 方法来进行分组操作,同时也可以使用 `Collectors.toMap()` 方法来将分组后的结果转换为 Map。在对分组后的结果进行排序时,可以使用 `Comparator` 接口来定义排序规则。以下是一个示例代码:
```java
List<Person> persons = Arrays.asList(
new Person("Tom", 20),
new Person("Jerry", 25),
new Person("Mike", 22),
new Person("Mary", 21),
new Person("John", 23),
new Person("Jane", 22)
);
Map<Integer, List<Person>> ageGroups = persons.stream()
.collect(Collectors.groupingBy(Person::getAge));
ageGroups.forEach((age, group) -> {
System.out.println("Age group: " + age);
group.stream()
.sorted(Comparator.comparing(Person::getName))
.forEach(person -> System.out.println(" " + person.getName()));
});
```
在上面的代码中,我们首先将一组 `Person` 对象按照年龄进行分组,得到了一个 `Map<Integer, List<Person>>` 类型的结果。然后,我们遍历每一组人员,将其按照姓名进行排序,最终输出分组后的结果。
阅读全文