要使用Collectors.groupingBy根据某个字段统计,你可以通过提供一个函数来指定分组的条件。
假设你有一个包含Person对象的列表,每个对象都有age字段表示年龄,你想要根据年龄分组,并统计每个年龄组的人数。以下是一个使用Collectors.groupingBy的示例代码:
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
    public static void main(String[] args) {
        List<Person> people = Arrays.asList(
                new Person("Alice", 25),
                new Person("Bob", 30),
                new Person("Charlie", 25),
                new Person("David", 30),
                new Person("Eve", 25)
        );
        Map<Integer, Long> countByAge = people.stream()
                .collect(Collectors.groupingBy(
                        Person::getAge,
                        Collectors.counting()
                ));
        System.out.println(countByAge);
    }
}
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;
    }
}
在上面的代码中,我们通过使用Collectors.groupingBy将人员列表按照年龄进行分组。我们传递了一个方法引用Person::getAge作为分组的条件。然后,我们使用Collectors.counting()收集器来统计每个年龄组的人数。
运行上述代码,你将得到以下输出:
{25=3, 30=2}
这表示在给定的人员列表中,年龄为25的组有3个人,年龄为30的组有2个人。
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号