collections.groupingby排序
时间: 2023-12-04 21:03:51 浏览: 97
要对 `Collections.groupingBy` 的结果进行排序,你可以使用 `Collectors.collectingAndThen` 方法来包装 `groupingBy` 的结果,并在其中调用 `Collectors.toMap` 方法,并指定一个排序的比较器。下面是示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
Map<Character, List<String>> result = list.stream()
.collect(Collectors.groupingBy(s -> s.charAt(0)));
Map<Character, List<String>> sortedResult = result.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(oldValue, newValue) -> oldValue, LinkedHashMap::new));
System.out.println(sortedResult);
}
}
```
这个示例代码中,我们首先使用 `groupingBy` 方法将列表中的字符串按照首字母进行分组。然后,我们使用 `entrySet()` 方法将结果集合转换为 `Stream`,并调用 `sorted` 方法对结果进行排序。最后,我们使用 `toMap` 方法将排序后的结果转换回一个 `LinkedHashMap`,以保持顺序。
输出结果为:`{a=[apple], b=[banana], c=[cherry], d=[date], e=[elderberry]}`,可以看到结果按照首字母进行了排序。
阅读全文