java中stream流中分组怎么用
时间: 2023-12-23 12:03:10 浏览: 87
Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合.md
在Java中,可以使用Stream API对集合进行分组操作。Stream API提供了一个groupingBy方法,用于将集合按照指定的条件进行分组,返回一个Map对象,其中Key为分组条件的值,Value为分组后的元素列表。
示例代码如下:
```java
List<Person> personList = new ArrayList<>();
// 添加Person对象到personList中
Map<String, List<Person>> groupByAgeMap = personList.stream()
.collect(Collectors.groupingBy(Person::getAge));
// 按照年龄分组,返回一个Map对象,其中Key为年龄,Value为年龄相同的Person对象列表
```
以上代码中,Person是自定义的一个对象,getAge是Person对象的一个方法,返回Person的年龄。
需要注意的是,groupingBy方法的参数是一个Function对象,用于指定分组条件。在上面的示例代码中,使用Person::getAge表示按照Person对象的年龄属性进行分组。如果需要对分组后的元素进行进一步的操作,可以在groupingBy方法后面链式调用其他Stream API提供的方法,如map、filter、reduce等。
另外,如果希望分组后的结果按照指定的方式排序,可以使用Collectors.groupingBy方法的重载方法groupingBy(Function, Supplier, Collector),其中第二个参数Supplier用于指定返回的Map对象的类型,第三个参数Collector用于对分组后的元素进行聚合操作,可以使用Collectors.toList()将元素列表转换为List对象,然后使用Stream API提供的排序方法进行排序。
阅读全文