使用stream流grouping by 实现三个条件有序分组
时间: 2024-04-21 07:06:29 浏览: 34
非常好的问题!使用Stream流的groupingBy功能可以根据指定条件对元素进行分组,并返回一个Map。你可以使用多个groupingBy,使得分组结果有序。下面是一个示例代码:
```
Map<String, Map<String, List<String>>> result = list.stream()
.collect(Collectors.groupingBy(elem -> elem.substring(0, 1),
LinkedHashMap::new,
Collectors.groupingBy(elem -> elem.substring(1, 2),
LinkedHashMap::new,
Collectors.mapping(elem -> elem.substring(2), Collectors.toList()))));
```
这个代码将元素按照前两个字符进行分组,并且保证了分组结果的顺序。你可以根据自己的需求进行修改。希望能对你有所帮助!
相关问题
使用stream流grouping by将list对象中三个条件依次分组
可以这样实现:
```
Map<String, Map<String, Map<String, List<Object>>>> groupedMap = list.stream()
.collect(Collectors.groupingBy(obj -> obj.getCondition1(),
Collectors.groupingBy(obj -> obj.getCondition2(),
Collectors.groupingBy(obj -> obj.getCondition3()))));
```
其中,`Condition1`、`Condition2`、`Condition3`分别表示三个条件。`groupedMap`是一个Map嵌套结构,可以通过三个条件依次进行分组。
使用stream流实现多条件有序分组
可以使用Java 8的 stream API进行多条件有序分组操作。首先,使用 sorted 方法对相应的字段进行排序,然后使用 collect 方法进行分组,代码如下:
```
Map<String, Map<String, List<YourClass>>> groups = yourList.stream()
.sorted(Comparator.comparing(YourClass::getFirstField)
.thenComparing(YourClass::getSecondField)
.thenComparing(YourClass::getThirdField))
.collect(Collectors.groupingBy(YourClass::getFirstField,
LinkedHashMap::new,
Collectors.groupingBy(YourClass::getSecondField,
LinkedHashMap::new,
Collectors.toList())));
```
其中,YourClass 表示待分组的类,getFirstField、getSecondField 和 getThirdField 分别表示按照什么字段进行分组和排序。最后,将分组后的结果保存在一个有序的 LinkedHashMap 内。
相关推荐
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)