Collectors.groupingBy 排序
时间: 2023-11-01 19:56:11 浏览: 96
JAVA对list集合进行排序Collections.sort()
对于Collectors.groupingBy,它的主要作用是根据给定的分类函数对元素进行分组,并返回一个Map类型的结果。它不提供直接的排序功能,但我们可以通过其他方式对其结果进行排序。
一种常见的方法是使用Collectors.toMap方法,并指定一个排序的Comparator。这样可以将分组结果转换为一个有序的Map。下面是一个示例:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("John", "Alice", "Mary", "Bob", "Jane");
Map<Character, List<String>> groupedNames = names.stream()
.collect(Collectors.groupingBy(name -> name.charAt(0)));
Map<Character, List<String>> sortedNames = groupedNames.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(u, v) -> { throw new IllegalStateException(String.format("Duplicate key %s", u)); },
LinkedHashMap::new
));
sortedNames.forEach((key, value) -> System.out.println(key + ": " + value));
}
}
```
这个示例将字符串列表按照首字母进行分组,并且按照字母顺序对结果进行排序。最后输出的结果将是有序的:
```
A: [Alice]
B: [Bob]
J: [John, Jane]
M: [Mary]
```
注意,这里使用了LinkedHashMap来保持元素的插入顺序。
希望这个示例能够帮到你!如果有任何其他问题,请随时问我。
阅读全文