stream流分组、
时间: 2023-08-16 20:12:26 浏览: 104
STREAM算法-数据流聚类知识&Stream;、CluStream、Birch算法
stream流分组是指将一个流按照某个条件或规则进行分组,使得相同条件或规则的元素被放置在同一个组中。这样可以方便对每个组进行独立操作或处理。
在Java中,可以使用Stream API中的groupingBy方法来实现流的分组操作。groupingBy方法接受一个Function参数,用于指定分组的条件或规则。例如,假设有一个包含Person对象的流,可以按照Person对象的年龄进行分组:
```java
List<Person> persons = ... // 获取Person对象的流
Map<Integer, List<Person>> groups = persons.stream()
.collect(Collectors.groupingBy(Person::getAge));
```
上述代码将根据Person对象的年龄属性将流中的元素分组,并将结果保存到一个Map中。Map的键是年龄,值是对应年龄的Person对象列表。
除了使用单一条件进行分组外,还可以使用多个条件进行复合分组。这可以通过使用groupingBy方法的重载版本来实现。例如,将Person对象按照性别和年龄进行分组:
```java
Map<String, Map<Integer, List<Person>>> groups = persons.stream()
.collect(Collectors.groupingBy(Person::getGender, Collectors.groupingBy(Person::getAge)));
```
上述代码将首先按照性别分组,然后在每个性别组内按照年龄再次分组,最终得到一个嵌套的Map结构。
除了使用groupingBy方法,Stream API还提供了其他一些分组操作的方法,如partitioningBy、groupingByConcurrent等,可以根据具体需求选择适合的方法进行流的分组操作。
阅读全文