Java Stream 多个属性分组求和

在Java编程中,我们经常需要对数据进行分组并进行一些计算,比如对多个属性进行分组求和。Java 8 引入的 Stream API 提供了一种简洁而强大的方式来处理这类数据操作。

Stream API 简介

Stream 是 Java 8 中新增的一个用来处理集合的 API,它可以让我们以一种更函数式的方式来操作集合数据。通过 Stream,我们可以轻松地对集合中的数据进行过滤、映射、排序、分组等操作。

多个属性分组求和示例

假设我们有一个包含员工信息的列表,每个员工有姓名、部门和工资三个属性。现在我们想要按部门对工资进行求和,我们可以使用 Stream API 来实现这个功能。

下面是一个示例代码:

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<Employee> employees = Arrays.asList(
                new Employee("Alice", "IT", 5000),
                new Employee("Bob", "HR", 6000),
                new Employee("Cathy", "IT", 7000),
                new Employee("David", "HR", 5500)
        );

        Map<String, Integer> departmentTotalSalary = employees.stream()
                .collect(Collectors.groupingBy(Employee::getDepartment,
                        Collectors.summingInt(Employee::getSalary)));

        System.out.println(departmentTotalSalary);
    }

    static class Employee {
        private String name;
        private String department;
        private int salary;

        public Employee(String name, String department, int salary) {
            this.name = name;
            this.department = department;
            this.salary = salary;
        }

        public String getDepartment() {
            return department;
        }

        public int getSalary() {
            return salary;
        }
    }
}

在上面的示例中,我们首先创建了一个包含员工信息的列表,然后使用 Stream API 的 collect 方法对数据进行分组,并通过 summingInt 求和。

结论

通过 Java Stream API,我们可以轻松地实现对多个属性进行分组求和的操作,极大地简化了我们的代码,提高了代码的可读性和可维护性。如果你还没有开始使用 Stream API,赶快学习并尝试吧!

旅行图

journey
    title Java Stream 多个属性分组求和
    section 准备数据
        Main: 创建包含员工信息的列表
    section 分组求和
        Main: 使用 Stream API 对数据进行分组求和
    section 打印结果
        Main: 打印部门工资总和

在这篇文章中,我们介绍了如何使用 Java Stream API 对多个属性进行分组求和的操作。通过实际示例,希望读者能够更好地理解 Stream API 的用法,并在实际项目中应用它。如果你对 Stream API 还有疑问,可以查阅官方文档或继续学习相关资料。愿你编程之路越走越宽广,写出更优雅的代码!