java如何对集合进行分组排序
时间: 2024-09-22 12:08:41 浏览: 45
java 集合分组与排序
4星 · 用户满意度95%
在Java中,对集合进行分组排序可以借助于Java 8引入的Stream API以及Collectors类。以下是基本步骤:
1. **分组**:
使用`collect`方法配合`Collectors.groupingBy`函数,根据一个键值函数将元素分成不同的组。例如,假设我们有一个Person对象列表,想根据年龄分组:
```java
Map<Integer, List<Person>> ageGroups = personList.stream()
.collect(Collectors.groupingBy(Person::getAge));
```
2. **排序**:
分组后,可以在每个组上单独应用排序。这通常通过`sorted`方法完成,它可以接受一个Comparator作为参数。例如,我们可以对每个年龄组按姓名排序:
```java
ageGroups.entrySet().forEach(entry -> entry.setValue(entry.getValue().sorted(Comparator.comparing(Person::getName))));
```
或者整个集合按年龄升序排序再按名字降序排序:
```java
List<Map.Entry<Integer, List<Person>>> sortedEntries = ageGroups.entrySet().stream()
.sorted(Map.Entry.comparingByKey().thenComparingBy(Map.Entry::getValue, Comparator.reverseOrder()))
.collect(Collectors.toList());
```
阅读全文