首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Java Stream API进行多级分组和求和

Java Stream API是Java 8引入的一种函数式编程风格的API,它提供了一种简洁、高效的方式来处理集合数据。使用Java Stream API可以方便地进行多级分组和求和操作。

多级分组是指根据多个属性对数据进行分组。在Java Stream API中,可以使用Collectors.groupingBy()方法进行分组操作。该方法接受一个Function参数,用于指定分组的属性,返回一个Map对象,其中键是分组的属性值,值是该属性值对应的元素列表。可以通过多次调用groupingBy()方法实现多级分组。

求和操作是指对某个属性进行求和计算。在Java Stream API中,可以使用Collectors.summingInt()、Collectors.summingLong()或Collectors.summingDouble()方法进行求和操作。这些方法接受一个Function参数,用于指定要求和的属性,返回一个求和结果。

下面是一个使用Java Stream API进行多级分组和求和的示例代码:

代码语言:txt
复制
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> persons = Arrays.asList(
                new Person("Alice", "A", 100),
                new Person("Bob", "A", 200),
                new Person("Charlie", "B", 300),
                new Person("David", "B", 400),
                new Person("Eve", "C", 500)
        );

        // 多级分组和求和
        Map<String, Map<String, Integer>> result = persons.stream()
                .collect(Collectors.groupingBy(Person::getGroup,
                        Collectors.groupingBy(Person::getCategory,
                                Collectors.summingInt(Person::getAmount))));

        // 输出结果
        result.forEach((group, categoryMap) -> {
            System.out.println("Group: " + group);
            categoryMap.forEach((category, sum) -> {
                System.out.println("Category: " + category + ", Sum: " + sum);
            });
        });
    }

    static class Person {
        private String name;
        private String category;
        private int amount;

        public Person(String name, String category, int amount) {
            this.name = name;
            this.category = category;
            this.amount = amount;
        }

        public String getName() {
            return name;
        }

        public String getCategory() {
            return category;
        }

        public int getAmount() {
            return amount;
        }

        public String getGroup() {
            return name.substring(0, 1);
        }
    }
}

上述代码中,我们定义了一个Person类来表示人员信息,包含姓名、类别和金额属性。通过Java Stream API对Person对象进行多级分组和求和操作,最终输出结果如下:

代码语言:txt
复制
Group: A
Category: A, Sum: 300
Group: B
Category: B, Sum: 700
Group: C
Category: C, Sum: 500

在这个示例中,我们首先根据姓名的首字母进行分组,然后在每个分组内根据类别进行二级分组,最后对金额进行求和。

推荐的腾讯云相关产品:腾讯云云服务器(ECS)、腾讯云对象存储(COS)、腾讯云数据库(TencentDB)等。你可以通过访问腾讯云官网(https://cloud.tencent.com/)获取更多关于这些产品的详细信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

43分3秒

1.尚硅谷全套JAVA教程--基础必备(67.32GB)/尚硅谷Java入门教程,java电子书+Java面试真题(2023新版)/08_授课视频/148-常用类与基础API-JDK8中新的日期时间API的使用和练习.mp4

25分49秒

093_尚硅谷大数据技术_Flink理论_Table API和Flink SQL(十四)_分组窗口

21分5秒

142_第十一章_Table API和SQL(六)_聚合查询(一)_分组聚合

1分38秒

WhatsApp Business和WhatsApp Business Platform(API)

1分28秒

JSP医药进销存管理系统myeclipse开发SQLServer数据库web结构java编程

1分34秒

JSP期末考试安排管理系统myeclipse开发mysql数据库web结构java编程

1分53秒

JSP贸易管理系统myeclipse开发mysql数据库struts编程java语言

1分3秒

JSP企业办公管理系统myeclipse开发SQLServer数据库web结构java编程

2分30秒

JSP SH论文答辩管理系统myeclipse开发mysql数据库mvc结构java编程

27秒

JSP美容管理系统系统myeclipse开发mysql数据库web结构java编程

1分25秒

JSP票据管理系统myeclipse开发mysql数据库web结构java编程

1分48秒

JSP库存管理系统myeclipse开发SQLServer数据库web结构java编程

领券