首页 > 编程语言 >Java根据字段分组求和金额

Java根据字段分组求和金额

时间:2023-08-07 13:01:11浏览次数:33  
标签:category Transaction Java transactions 求和 分组 new public

如果你有一个数据集,希望按照某个字段进行分组,并计算每个分组中金额的总和,你可以使用Java的Stream API来实现。下面是一个示例代码:

假设你有一个包含以下数据的类Transaction

public class Transaction {
    private String category;
    private double amount;

    public Transaction(String category, double amount) {
        this.category = category;
        this.amount = amount;
    }

    public String getCategory() {
        return category;
    }

    public double getAmount() {
        return amount;
    }
}

现在,假设你有一个List<Transaction>,其中包含了多个交易记录。你可以按照category字段进行分组,并计算每个分组中金额的总和,可以按照以下方式实现:

import java.util.*;
import java.util.stream.Collectors;

public class GroupAndSum {
    public static void main(String[] args) {
        List<Transaction> transactions = new ArrayList<>();
        transactions.add(new Transaction("category1", 100.0));
        transactions.add(new Transaction("category2", 200.0));
        transactions.add(new Transaction("category1", 50.0));
        transactions.add(new Transaction("category3", 300.0));
        transactions.add(new Transaction("category2", 150.0));

        Map<String, Double> sumByCategory = transactions.stream()
                .collect(Collectors.groupingBy(Transaction::getCategory, Collectors.summingDouble(Transaction::getAmount)));

        System.out.println("Category\tSum");
        for (Map.Entry<String, Double> entry : sumByCategory.entrySet()) {
            System.out.println(entry.getKey() + "\t" + entry.getValue());
        }
    }
}

这个示例首先创建了一个List<Transaction>来存储交易记录。然后,使用Java 8的Stream API将交易记录按照category字段进行分组,并使用Collectors.summingDouble()计算每个分组中金额的总和。最后,通过遍历结果的Map<String, Double>,输出每个分组的category和对应的总和。

运行上述代码,你将得到类似以下的输出:

Category    Sum
category1   150.0
category2   350.0
category3   300.0

这表明按照分类分组后,每个分组中金额的总和。你可以根据自己的数据结构和字段名称作出相应的调整。

标签:category,Transaction,Java,transactions,求和,分组,new,public
From: https://blog.51cto.com/u_16007699/6992725

相关文章

  • Java调度算法实现与应用(FCFS、SJF、RR、HPF)
    文章目录一、调度算法概述二、先来先服务(FCFS)算法1、概述2、Java实现FCFS3、优缺点三、短作业优先(SJF)算法1、概述2、Java实现SJF3、优缺点四、时间片轮转(RR)算法1、概述2、Java实现RR3、优缺点五、优先级调度(HPF)算法1、概述2、Java实现HPF一、调度算法概述调度算法常见于操作系统......
  • java 异常 java.util.ConcurrentModificationException java 删除集合中满足条件的元
    java异常java.util.ConcurrentModificationExceptionjava.util.ConcurrentModificationException是Java中的一个常见异常,通常在使用迭代器或并发操作时发生。当集合在迭代过程中被修改时,就可能会抛出这个异常。这个异常是为了帮助开发人员发现并发访问集合时的潜在问题。在迭代期......
  • C#.NET 国密SM2 签名验签 与JAVA互通 ver:20230807
    C#.NET国密SM2签名验签与JAVA互通ver:20230807 .NET环境:.NET6控制台程序(.netcore)。JAVA环境:JAVA8(JDK8,JAVA1.8),带maven的JAVA控制台程序。 1.最好要到对方源码(DEMO+JAR包也可以),可以用IDEA反编译(Ctrl+鼠标左键),看它过程逻辑和结果格式。2.常说的SM2签名,指的就......
  • javaee 什么是xml
    一、什么是XML?XML(ExtensibleMarkupLanguage)可扩展标记语言。XML指可扩展标记语言(EXtensibleMarkupLanguage)XML是一种标记语言,很类似HTMLXML的设计宗旨是传输数据,而非显示数据XML标签没有被预定义。您需要自行定义标签。XML被设计为具有自我描述性。XML是W3C的......
  • javaee 泛型的上下边界和通配符的使用
    下边界packagecom.test.generic;importjava.util.Collection;publicclassTestGenericClass{ //泛型方法?extendsE:泛型的限定 publicstatic<E>voidmove(Collection<E>from,Collection<?superE>to) { for(Ee:from) { to.add(e......
  • Java:Java程序通过执行系统命令调用Python脚本
    本文实现功能:Java程序调用Python脚本Python脚本importsysdefadd(x,y):returnx+yif__name__=="__main__":print(add(int(sys.argv[1]),int(sys.argv[2])))直接执行$pythonmath.py123Java程序调用Python脚本packageio.github.mouday.utils;importja......
  • 了解 Java 内存模型
    Java内存模型(JavaMemoryModel)是Java语言规范定义的一套规则,提供了一组规则和同步机制,以确保多线程程序在多线程环境下正确地处理内存访问的一致性和可见性问题。开发人员在编写多线程程序时,需要遵守Java内存模型的规则,并使用适当的同步机制来保证程序的正确性。1、Java内存模型主......
  • javaee 创建泛型方法
    packagecom.test.generic;importjava.util.Collection;publicclassTestGenericClass{ //泛型方法?extendsE:泛型的限定 publicstatic<E>voidmove(Collection<E>from,Collection<?superE>to) { for(Ee:from) { to.add(e);......
  • 基于Java敬老院管理系统的设计与实现
     随着社会的快速发展,人们的工作节奏不断提高,大多数的家庭都面临着工作和家庭很难兼顾的问题,对于家里有生活无法自理的老人来说,更是有着极大地困扰。敬老院行业正式在这种背景下逐渐的发展起来,但是因为使用的手工管理方式,导致敬老院管理效率低下,无法解决养老院发展带来的巨大工作量......
  • 一文告诉你为什么代码提交要关联需求和任务信息丨IDCF
    本文从代码提交关联需求任务的功能说起,探讨了其意义、功能扩展以及对研发效能提升带来的收益。记得原来有一次听到一个开发同学抱怨说为啥每次Commit都必须要填写commitmessage呢?他觉得有些浪费时间,因此想出了各种办法来应对,比如输入一个句点或复制粘贴上个commitmessage等。这种......