.stream()根据两个元素分组
时间: 2023-08-10 18:42:38 浏览: 71
JAVA8 stream中三个参数的reduce方法对List进行分组统计操作
5星 · 资源好评率100%
可以使用Java 8中的Stream API和Collectors.groupingBy()方法实现根据两个元素进行分组。假设有一个包含两个元素的对象列表,可以按照其中的两个元素进行分组,示例代码如下:
```
List<MyObject> list = ...
Map<String, Map<String, List<MyObject>>> result = list.stream()
.collect(Collectors.groupingBy(MyObject::getField1,
Collectors.groupingBy(MyObject::getField2)));
```
上述代码中,MyObject是包含两个元素的对象,getField1和getField2分别是两个元素的getter方法。使用Collectors.groupingBy()方法,首先按照getField1元素进行分组,然后在每个分组中再按照getField2元素进行分组,最终得到一个Map<String, Map<String, List<MyObject>>>类型的结果,其中外层的Map的键是getField1元素的值,内层的Map的键是getField2元素的值,对应的值是满足这两个元素值的对象列表。
阅读全文