Collectors.groupingBy 方法详情
时间: 2024-01-26 07:14:32 浏览: 78
深入探索Java 8的`Collectors.groupingBy()`:分组的艺术
Collectors.groupingBy方法是Java 8中的一个方法,它用于根据指定的分类器对元素进行分组。该方法的定义如下:
```java
public static <T, K> Collector<T, ?, Map<K, List<T>>> groupingBy(Function<? super T, ? extends K> classifier) {
return groupingBy(classifier, toList());
}
```
该方法接受一个Function类型的参数classifier,用于指定元素的分类方式。它返回一个Collector类型的结果,该结果是一个Map<K, List<T>>类型的集合,其中K是分类的键,List<T>是该分类下的元素列表。
下面是一个使用Collectors.groupingBy方法的示例代码:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class GroupingByExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eve");
Map<Integer, List<String>> groupedNames = names.stream()
.collect(Collectors.groupingBy(String::length));
System.out.println(groupedNames);
}
}
```
上述代码将一个字符串列表按照字符串长度进行分组,并将结果存储在一个Map<Integer, List<String>>类型的集合中。输出结果如下:
```
{3=[Bob, Eve], 5=[Alice, David], 7=[Charlie]}
```
该结果表示长度为3的字符串有两个(Bob和Eve),长度为5的字符串有两个(Alice和David),长度为7的字符串有一个(Charlie)。
阅读全文