java stream流分组后排序
时间: 2025-05-23 15:11:36 浏览: 11
### 如何在 Java 中对使用 Stream API 分组后的结果进行排序
当涉及到分组后再排序的操作时,可以通过组合 `Collectors.groupingBy` 和 `Collectors.collectingAndThen` 来实现这一需求。具体来说,在完成分组操作之后,可以进一步应用自定义的比较器来进行排序。
对于分组并排序的需求,下面是一个具体的例子,该例子展示了一个用户列表按照年龄分组后按名字长度降序排列的过程:
```java
import java.util.*;
import java.util.stream.Collectors;
class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public int getAge() { return age; }
@Override
public String toString() {
return "User{name='" + name + "', age=" + age + '}';
}
}
public class GroupSortExample {
public static void main(String[] args) {
List<User> users = Arrays.asList(
new User("Alice", 30),
new User("Bob", 25),
new User("Charlie", 30),
new User("David", 25));
Map<Integer, List<User>> groupedSortedUsers = users.stream()
.collect(Collectors.groupingBy(User::getAge,
Collectors.collectingAndThen(
Collectors.toList(),
list -> list.stream()
.sorted(Comparator.comparing((User u) -> u.getName().length()).reversed())
.collect(Collectors.toList()))));
System.out.println(groupedSortedUsers);
}
}
```
上述代码先依据用户的年龄进行了分组,随后针对每一个年龄段内的用户名单,基于用户名字长度实现了逆向排序[^1]。
阅读全文
相关推荐
















