stream分组操作
时间: 2024-01-11 11:20:52 浏览: 27
stream分组操作可以使用Collectors.groupingBy()方法来实现。该方法可以根据指定的条件将流中的元素进行分组,并返回一个Map对象,其中键是分组的条件,值是对应分组的元素列表。
下面是两个示例来演示stream分组操作:
1. 统计每个分组的count:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class GroupingByDemo {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "orange", "apple", "banana");
Map<String, Long> countByFruit = fruits.stream()
.collect(Collectors.groupingBy(fruit -> fruit, Collectors.counting()));
System.out.println(countByFruit);
// 输出:{orange=1, banana=2, apple=2}
}
}
```
2. 转换分组结果List -> List:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class GroupingByDemo {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "orange", "apple", "banana");
Map<String, List<String>> groupByFruit = fruits.stream()
.collect(Collectors.groupingBy(fruit -> fruit));
System.out.println(groupByFruit);
// 输出:{orange=[orange], banana=[banana, banana], apple=[apple, apple]}
}
}
```