java使用stream将list分组
时间: 2024-10-15 22:04:43 浏览: 4
在Java中,Stream API提供了一种方便的方式来对集合进行分组操作。`collect()`方法配合`Collectors.groupingBy()`函数可以用于按指定键对列表元素进行分组。假设你有一个`List<String>`,你想按照每个字符串的第一个字符进行分组,你可以这样做:
```java
import java.util.*;
import java.util.stream.Collectors;
List<String> strings = Arrays.asList("Apple", "Banana", "Cherry", "Date");
Map<Character, List<String>> groupedStrings = strings.stream()
.collect(Collectors.groupingBy(
Function.identity(), // 使用默认的equals()比较键值,这里使用Function.identity()表示直接取元素本身作为键
Collectors.toList()
));
// 输出结果
groupedStrings.forEach((key, value) -> {
System.out.println("Key: " + key + ", Values: " + value);
});
```
在这个例子中,`groupingBy()`接受两个参数:一个函数用于提取键(这里是字符串的第一个字符),另一个是收集器(这里使用`toList()`收集每个键对应的值)。最后,`forEach()`遍历并打印出分组后的结果。