Collectors.groupingBy分组后的排序问题
时间: 2023-07-11 09:45:21 浏览: 131
在使用`Collectors.groupingBy`进行分组后,可以使用`Collectors.toMap`进行排序。具体的方法是将分组后的`Map`转换为`List`,并使用`Comparator`进行排序。以下是一个示例代码:
```java
Map<String, List<Integer>> map = Arrays.asList(1, 2, 3, 4, 5, 6)
.stream()
.collect(Collectors.groupingBy(i -> i % 2 == 0 ? "even" : "odd"));
List<Map.Entry<String, List<Integer>>> sortedList = new ArrayList<>(map.entrySet());
sortedList.sort(Map.Entry.comparingByKey());
Map<String, List<Integer>> sortedMap = new LinkedHashMap<>();
for (Map.Entry<String, List<Integer>> entry : sortedList) {
sortedMap.put(entry.getKey(), entry.getValue());
}
System.out.println(sortedMap);
```
在上面的示例代码中,首先使用`Collectors.groupingBy`将奇偶数分组。然后将`Map`转换为`List`,并使用`Map.Entry.comparingByKey()`进行排序。最后将排序后的`List`转换为`Map`,这里使用了`LinkedHashMap`来保持顺序。
阅读全文