如何用stream进行分组
时间: 2024-04-25 11:22:05 浏览: 88
使用Stream进行分组可以通过Collectors的groupingBy方法实现。可以使用并行流或串行流进行分组。
使用并行流进行分组的示例代码如下:
```
Map<String, Map<String, List<Article>>> result = articles.parallelStream()
.collect(Collectors.groupingBy(Article::getCountryCode, Collectors.groupingBy(Article::getProvince)));
```
这段代码将文章列表按照国家代码和省份进行多维度的分组。最终的结果是一个Map,其中键是国家代码,值是另一个Map,键是省份,值是文章列表。
使用串行流进行分组的示例代码如下:
```
Map<String, Map<String, List<Article>>> result = articles.stream()
.collect(Collectors.groupingBy(Article::getCountryCode, Collectors.groupingBy(Article::getProvince)));
```
这段代码与并行流的代码类似,只是将parallelStream()改为了stream()。
无论是使用并行流还是串行流,都可以通过Collectors.groupingBy方法实现多维度的分组。
#### 引用[.reference_title]
- *1* *2* [Java8中使用stream进行分组统计和普通实现的分组统计的性能对比](https://blog.csdn.net/fenglibing/article/details/80238310)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [Stream流分组](https://blog.csdn.net/a742128486/article/details/123718852)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文