java stream 分组后对组内值排序
时间: 2023-08-04 21:24:16 浏览: 136
可以使用Java 8的Stream API来对分组后的数据进行排序,代码如下:
```java
Map<String, List<Integer>> map = // 分组得到的Map
map.forEach((key, value) -> {
value.sort(Comparator.naturalOrder());
});
```
其中,`value.sort(Comparator.naturalOrder())`方法用于对值进行排序,`Comparator.naturalOrder()`表示使用自然排序方式。
此外,如果需要对值进行自定义排序,可以传入自定义的`Comparator`,例如:
```java
Map<String, List<Integer>> map = // 分组得到的Map
map.forEach((key, value) -> {
value.sort((a, b) -> {
// 自定义排序逻辑
});
});
```
注意,上述代码直接对原始List进行了排序,因此会修改原始数据。如果需要保留原始数据,可以使用`Collectors.toList()`方法创建一个新的List,然后对新的List进行排序。例如:
```java
Map<String, List<Integer>> map = // 分组得到的Map
Map<String, List<Integer>> sortedMap = map.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, e -> {
List<Integer> newList = new ArrayList<>(e.getValue());
newList.sort(Comparator.naturalOrder());
return newList;
}));
```
其中,`Collectors.toMap()`方法用于将排序后的List转换为Map。
阅读全文