Collectors.groupingBy List<?>
时间: 2024-02-06 17:08:11 浏览: 78
Collectors.groupingBy(List<?>)是Java 8中的一个用于分组的收集器(Collector)。它可以将一个列表(List)中的元素按照指定的条件进行分组,并将分组结果存储在一个Map中。
具体来说,Collectors.groupingBy(List<?>)方法接受一个Function作为参数,该函数用于根据元素的某个属性或条件进行分组。它会遍历列表中的每个元素,并根据指定的条件将元素分配到对应的分组中。
下面是一个示例代码,演示了如何使用Collectors.groupingBy(List<?>)方法对一个Person对象列表按照年龄进行分组:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
List<Person> persons = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 25),
new Person("Charlie", 20),
new Person("David", 25)
);
Map<Integer, List<Person>> groupedByAge = persons.stream()
.collect(Collectors.groupingBy(Person::getAge));
System.out.println(groupedByAge);
}
}
```
运行以上代码,输出结果为:
```
{20=[Person{name='Alice', age=20}, Person{name='Charlie', age=20}], 25=[Person{name='Bob', age=25}, Person{name='David', age=25}]}
```
可以看到,根据年龄进行分组后,年龄为20的人有两个(Alice和Charlie),年龄为25的人也有两个(Bob和David)。
阅读全文