Java Lambada分组 某个属性统计

在Java编程中,使用Lambda表达式能够使代码更加简洁和易读。其中,对数据进行分组并统计某个属性是一个常见的需求。本文将介绍如何使用Java Lambada表达式来实现对数据进行分组,并统计某个属性的功能。

1. 数据准备

首先,我们需要准备一些数据来演示。假设我们有一个Person类,包含nameage两个属性。

public 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;
    }
}

接下来,我们创建一些Person对象,用于演示。

List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 30));
personList.add(new Person("Bob", 25));
personList.add(new Person("Alice", 28));
personList.add(new Person("Bob", 32));
personList.add(new Person("Alice", 35));

2. 分组统计

现在,我们想要按照name属性对Person对象进行分组,并统计每个组中的人数。我们可以使用Java Lambada表达式来实现这个功能。

Map<String, Long> countByName = personList.stream()
        .collect(Collectors.groupingBy(Person::getName, Collectors.counting()));

countByName.forEach((name, count) -> 
    System.out.println(name + ": " + count));

在上面的代码中,Collectors.groupingBy(Person::getName, Collectors.counting())表示按照name属性进行分组,并统计每个组的数量。最后,我们使用forEach方法打印出每个组的名称和数量。

3. 完整代码示例

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Person> personList = new ArrayList<>();
        personList.add(new Person("Alice", 30));
        personList.add(new Person("Bob", 25));
        personList.add(new Person("Alice", 28));
        personList.add(new Person("Bob", 32));
        personList.add(new Person("Alice", 35));

        Map<String, Long> countByName = personList.stream()
                .collect(Collectors.groupingBy(Person::getName, Collectors.counting()));

        countByName.forEach((name, count) -> 
            System.out.println(name + ": " + count));
    }
}

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;
    }
}

4. 总结

通过以上代码示例,我们学习了如何使用Java Lambada表达式对数据进行分组,并统计某个属性的功能。这种方式使代码更加简洁和易读,提高了代码的可维护性和可读性。在实际开发中,我们可以根据这种方法进行更复杂的数据处理操作,提高编程效率和代码质量。希望本文对您有所帮助,谢谢阅读!

journey
    title Java Lambada分组 某个属性统计
    section 数据准备
        - 创建Person类
        - 创建Person对象列表
    section 分组统计
        - 使用Java Lambada表达式对数据进行分组
        - 统计某个属性的数量
    section 完整代码示例
        - 完整的Java代码示例
    section 总结
        - 学习了如何使用Java Lambada表达式

通过本文的介绍,希望您对Java Lambada表达式的使用有了更深入的了解。祝您编程愉快!