stream流如何分组
时间: 2023-10-18 17:30:00 浏览: 91
Java Stream 流实现合并操作示例
5星 · 资源好评率100%
使用stream流进行分组可以通过groupingBy方法实现。可以根据一个或多个属性进行分组,并将分组结果存储在一个Map中。例如,可以按照性别将用户进行分组,代码示例如下:
Map<String, List<User>> sexAndUserMap = users.parallelStream()
.collect(Collectors.groupingBy(User::getSex));
这样,就可以将用户按照性别进行分组,得到一个以性别为键,对应性别下的用户列表为值的Map。
如果需要进行多级分组,可以在groupingBy方法中嵌套多个groupingBy方法。例如,可以先按照性别分组,然后在每个性别组下按照姓名再进行分组,代码示例如下:
Map<String, Map<String, List<User>>> sexAndNameAndUserListMap = users.parallelStream()
.collect(Collectors.groupingBy(User::getSex, Collectors.groupingBy(User::getName)));
这样,就可以得到一个以性别为第一级键,对应性别下以姓名为第二级键,对应姓名下的用户列表为值的Map。
除了分组,还可以进行一些统计操作,例如求最大值、最小值、平均值等。可以使用groupingBy方法的重载版本,传入对应的Collector来实现。具体的操作可以参考JDK8中关于stream流的文档。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [java1.8 中 stream 的 groupingBy 最大值、最小值分组](https://download.csdn.net/download/qq_42711127/18909862)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文