在Java中,Collectors.groupingBy()是一个用于对流元素进行分组的收集器。它可以根据指定的分类函数对流元素进行分组,并返回一个Map对象,其中键是分组的标准,值是属于相应组的元素列表。
下面是一个使用Collectors.groupingBy()方法的示例:
java
Copy code
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> fruits = Arrays.asList("apple", "banana", "cherry", "date","dis", "elderberry");
Map<Character, List<String>> groupedFruits = fruits.stream()
.collect(Collectors.groupingBy(fruit -> fruit.charAt(0)));
System.out.println(groupedFruits);
}
}
在上述示例中,我们有一个包含水果名称的列表fruits。我们希望按照各个水果名称的首字母进行分组。
使用fruits.stream()创建一个流,并通过Collectors.groupingBy()方法指定分类函数 fruit -> fruit.charAt(0),即根据水果名称的首字母进行分组。
groupBy()方法将流元素按照分类函数的结果进行分组,并将结果存储在groupedFruits变量中。
最后,通过打印输出语句,我们可以看到分组后的结果。
运行以上代码,输出结果可能如下所示:
css Copy code
{a=[apple], b=[banana], c=[cherry], d=[date, dis], e=[elderberry]}
在这个例子中,根据水果名称的首字母进行分组后,我们得到一个Map对象,其中键是首字母,值是具有相应首字母的水果名称列表。例如,键'a'对应的值是包含"apple"的列表。
使用Collectors.groupingBy()方法可以灵活地根据不同的分类函数进行分组,并以多种方式处理和操作分组后的结果。