使用嵌套列表进行分组和求和

2023-12-31

我有嵌套列表,我正在尝试使用 java 流和收集器进行分组和求和以获得所需的结果。这样我就无法循环多个SubAccounts。我必须使用 for 循环或其他一些逻辑。我想使用streams api来实现。有没有可能

Map<Long, BigDecimal> assetQuanMap = subAccounts.getAssets.parallelStream().collect(Collectors.groupingBy(Asset::getAssetId, Collectors.reducing(BigDecimal.ZERO, Asset::getQuantity, BigDecimal::add)));

我有以下课程或表示:

    Account
        SubAccount1
            Assets
                1 - 20
                2 - 30
                3 - 40
        SubAccount2
            Assets
                1 - 10
                2 - 5
                3 - 3
        SubAccount3

                1 - 3
                2 - 3
                3 - 4

帐户类如下所示:

Public class Account{
  List<SubAccounts> list;
}

Public Class SubAccounts    {
   List<Assets> list;
}

Public class Assets{
    Long assetId;
    BigDecimal quantity ;
}

我试图在 Map 中得到如下结果。基本上,对于每个子帐户,我需要在帐户级别对资产进行分组,如下所示

1 - 33
2 - 38
3 - 47

你必须使用两个flatMap https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#flatMap-java.util.function.Function-这样你就可以分组assetId

Map<String, BigDecimal> collect = accounts.stream()
        .flatMap(account -> account.getList().stream())
        .flatMap(subAccount -> subAccount.getList().stream())
        .collect(Collectors.groupingBy(Assets::getAssetId,
                Collectors.reducing(
                        BigDecimal.ZERO, 
                        Assets::getQuantity,
                        BigDecimal::add)
        ));

从你的代码assetId是一个字符串,所以映射的键应该是一个字符串,或者你必须转换它,或者在你的类中更改它,如下所示:

Map<Long, BigDecimal> collect = accounts.stream()
        .flatMap(account -> account.getList().stream())
        .flatMap(subAccount -> subAccount.getList().stream())
        .collect(Collectors.groupingBy(asset -> Long.valueOf(asset.getAssetId()),
                Collectors.reducing(
                        BigDecimal.ZERO,
                        Assets::getQuantity,
                        BigDecimal::add
                )
        ));

Notes

  • 不要在类名中使用复数;
  • 不要将变量命名为list,使用另一个重要的名称;
  • 不要使用assetId作为属性的名称而不是使用只是使用id;
  • 不要在变量名称中使用 ListassetList,改为使用s最后例如assets or accounts.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用嵌套列表进行分组和求和 的相关文章

  • 在java代码中创建postgresql表

    我有一个与 postgreSQL 数据库连接的 java 代码 现在 我希望当它连接到数据库时 我还将创建数据库表 但我的问题是 它不会创建数据库 我不知道问题是什么 这是我的代码 Statement st null ResultSet r
  • ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

    通过 extern 属性文件 url 指定如下 jdbc mariadb xxxxx 3306 xxxxx zeroDateTimeBehavior convertToNull 连接工作正常并且能够查询数据库 通过休眠 我创建了一个映射到带
  • Android Studio 与 Google Play 服务的编译问题

    我正在运行 Android Studio 0 8 4 并在 Android Studio 0 8 2 上尝试过此操作 我正在运行 Java JDK 1 8 0 11 并尝试使用 JDK 1 8 0 05 每当我尝试构建我的 android
  • Jenkins 未显示 Maven 编译器错误

    在 Jenkins 中构建多模块 maven 3 项目时 如果出现构建错误 我们会收到一条神秘消息 表明 Maven 编译器插件失败 这在上周才刚刚开始发生 INFO BUILD FAILURE INFO INFO Total time 1
  • 如何在正则表达式中编写可选单词?

    我想编写一个识别以下模式的 java 正则表达式 abc def the ghi and abc def ghi 我试过这个 abc def the ghi 但是 它没有识别第二种模式 我哪里出错了 abc def the ghi 删除多余
  • 如何检查单词是否在wordNet中

    我开始了解wordNet直到我知道我找到了synonymous对于一个特定的词 现在我有一个文件 我想使用标记化该文本n gram例如 String s I like to wear tee shirt 使用后n gram这将是 I lik
  • JFrame 在连续运行代码时冻结

    我在使用时遇到问题JFrame 它会冻结 连续运行代码 下面是我的代码 点击时btnRun 我调用了该函数MainLoop ActionListener btnRun Click new ActionListener Override pu
  • java.exe 以非零退出值 1 结束

    只是为了开始 我并不是真正尝试从 Android 中的 xlsx 文件中读取单元格 我已经尝试了几乎所有我在 Google 上搜索到的内容 但是每次 在两台不同的 PC 上 都是 Java 1 7 0 79 当我尝试构建 运行 这个应用程序
  • java绕中心旋转矩形

    我想围绕其中心点旋转一个矩形 它应该保留在应该绘制的位置并在该空间中旋转 这是我的代码 AffineTransform transform new AffineTransform transform rotate Math toRadian
  • 如何在 JmsMessagingTemplate.sendAndReceive 上设置等待超时

    我在 MVC 控制器中使用 JmsMessagingTemplate 的 sendAndReceive 但如果没有发送回复消息 它似乎会永远等待回复 该文档指出 返回 回复 如果无法接收消息 例如由于超时 则可能为 null 然而 我只是不
  • React Native v0.71.8 React-native-vector-icons 你看不到的图标

    我在用react native版本v0 71 8 我安装了react native vector icons库 但图标未显示 似乎链接在最新版本的 React Native 中不再起作用 所以我按照说明进行操作 但它不再编译 出现以下错误
  • 获取接收者的设备令牌以在 Firebase 中发送通知

    所以我正在学习如何使用 firebase 发送设备到设备的通知 我看到了这个answer https stackoverflow com a 42548586 5237289发送通知 看起来很简单 现在 我知道要获取发件人的令牌 它应该如下
  • 添加 char 和 int

    据我了解 字符是一个字符 即一个字母 一个digit 标点符号 制表符 空格或类似的东西 因此 当我这样做时 char c 1 System out println c 输出 1 正是我所期望的 那么为什么当我这样做时 int a 1 ch
  • 向Java类库添加函数

    我使用的 Java 类库在很多方面都不完整 有很多类我认为应该内置其他成员函数 但是 我不确定添加这些成员函数的最佳实践 让我们调用不足的基类A class A public A long arbitrary arguments publi
  • log4j.properties 在 Wildfly 上无法正常工作

    我的类路径中有一个 log4j properties 文件 它位于 APP XX jar log4j properties 位置 我注意到在ear文件中我还可以在lib文件夹中找到log4j 1 2 17 jar 但无论我在 log4j p
  • junit4 使用特定测试方法创建测试套件

    在 junit4 中 我想执行来自不同类的特定测试方法 即想要使用来自不同类的特定测试方法创建一个测试套件 假设我有两门课 public class Test Login Test public void test Login 001 Sy
  • Axis2 的 wsdl2java 在 RPC/Encoded 样式 Web 服务上失败

    Axis2 有替代方案吗 或者让它工作的方式 例如不同的数据绑定 Retrieving document at Exception in thread main org apache axis2 wsdl codegen CodeGener
  • FetchType.LAZY 不适用于休眠中的 @ManyToOne 映射

    简而言之 我的 Child 类与 Parent 类之间存在多对一的关系 我想加载所有的孩子 而不必加载他们的父母详细信息 我的孩子班级是 Entity public class Child implements Serializable I
  • Graphics2D setfont() 严重减慢了 java 应用程序的启动速度

    我正在用java制作一个游戏 它每秒刷新60次 每次执行循环时 我都会使用 g2d 来绘制图像和字符串 如果我这样做的话一切都会很好g2d setFont new Font Arial Font PLAIN 8 和抽绳 这将是正常的 但如果
  • MyBatis 枚举的使用

    我知道以前有人问过这个问题 但我无法根据迄今为止找到的信息实施解决方案 所以也许有人可以向我解释一下 我有一个表 状态 它有两列 id 和 name id是PK 我不想使用 POJO Status 而是使用枚举 我创建了这样一个枚举 如下所

随机推荐

  • Cosmos DB 存储过程在没有 PartitionKey 的情况下无法执行

    我有一个包含 PartitionKey i 的集合 它创建了一个接受查询作为参数的存储过程 在此存储过程中 我正在获取一些要更新的文档 但在获取时显示一条错误 提示当我使用该方法时提供 PartitionKey public Task
  • 如何使用 QCombobox 选择更新 QTableView 单元格?

    我想将委托 QComboBox 委托添加到某些 QTableView 行中的特定单元格 我找到了几篇关于如何添加委托的帖子 但没有一篇包含使用 QComboBox 选择更新单元格的示例 这是我到目前为止所拥有的 main ui
  • 将变量分配给Python中函数的局部作用域

    我想将一个变量分配给被多次调用的 lambda 范围 每次都有一个新的变量实例 我怎么做 f lambda x x var x var y Code needed here to prepare f with a new var resul
  • 使用h5py增量写入hdf5

    我有一个关于如何最好地使用 python h5py 写入 hdf5 文件的问题 我有这样的数据 timepoint voltage1 voltage2 178 10 12 179 12 11 185 9
  • 如何在 JBoss 6 中分离耳朵类加载器和系统类加载器?

    我正在尝试从 JBoss 4 2 1 升级到 JBoss 6 在 JBoss 4 2 1 中 我们手动部署应用程序作为爆炸战争 一切都运行良好 我遇到了问题 因为我尝试部署的应用程序使用的第三方库版本比 JBoss 6 现在默认包含的版本要
  • 注入的 HttpClient 忽略 IHttpClientFactory 配置

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 函数调用时的奇怪行为

    当调用Javascript函数时 似乎JS优先考虑不带参数的函数 即使我有相同的带参数的函数名 奇怪的行为仅发生在以下情况 我有一个嵌入了 Javascript 的 HTML 页面 如下所示 Javascript in the page f
  • 有没有办法从 FBJS 的画布访问 iframe 的窗口对象? (Facebook)

    我需要能够从 facebook 画布访问 iframe 窗口 通常你可以使用 window frames 来做到这一点 但 FJBS 似乎不允许访问 window 对象 有人知道如何访问窗口对象吗 你可以试试这个 让我知道它是如何工作的 v
  • Firebase API 在 React Native 上使用 Axios 时不会响应常见错误代码

    我正在使用 Axios 和 Redux 使用 Firebase Auth REST API 和 React Native 我有一个使用电子邮件和密码登录的操作 这是我的代码 export function signIn data const
  • Python 类方法在调用另一个方法时运行

    我有一堂课如下 class MyClass object def init self self foo foo self bar bar self methodCalls 0 tracks number of times any funct
  • Java - 如何防止 WindowClosing 实际关闭窗口

    对于大多数人来说 我似乎遇到了相反的问题 我有以下非常标准的代码来查看用户是否想在关闭窗口之前进行一些保存 frame setDefaultCloseOperation WindowConstants DO NOTHING ON CLOSE
  • R arulesSequences 查找序列支持哪些模式

    我遇到了麻烦arulesSequencesR 中的库 我有一个带有时间信息的事务数据集 在这里 我们使用默认的zaki数据集 我用黑桃 cspade函数 来查找数据集中的频繁子序列 library arulesSequences data
  • Jquery .toggle 替换代码

    我的网站上有一个按钮 可以在文章的宽布局和窄布局之间切换 从 JQuery 1 9 开始 由于toggle 的弃用 这已经不起作用了 我不是 JS 方面的高手 也没有设法从这里的各种问题中拼凑出答案 所以如果可能的话 希望有人看看我的具体案
  • 通过 Tinkerpop 使用特定模型将(数百万行)数据导入 Janusgraph 的最佳方法

    刚开始使用 Tinkerpop 和 Janusgraph 我正在尝试根据文档来解决这个问题 我有三个数据集 每个数据集包含大约 2000 万行 csv 文件 有一个特定的模型 其中的变量和行需要连接 例如什么是顶点 什么是标签 什么是边 等
  • 将 JSON 数据映射到具有特定视图模型类型的 Knockout observableArray

    有没有办法将 JSON 数据对象映射到可观察数组 然后依次将可观察数组的每个项目初始化为特定类型的视图模型 我已经查看了所有淘汰赛的文档以及淘汰赛和映射示例 但我找不到任何适合我所追求的答案 所以 我有以下 JSON 数据 var data
  • MATLAB 中的双 for 循环,存储信息

    我在 MATLAB 中有两个 for 循环 其中一个 for 循环导致不同的变量被插入到模型中 这些变量是 43 然后我有 5 个地平线 所以我对模型进行了 215 次估计 我的问题是我想将其存储在 215x5 矩阵中 我有 x5 的原因是
  • LINQ 中的动态查询

    如果我有包含字段的 Customer 类 如何为 Linq 编写动态查询 string name string address int phoneno 我必须根据类似于给出的信息进行查询 query string Empty if stri
  • 数据表服务器端的内连接4表

    我有用于在数据表中显示数据的代码 php 但是这个 php 服务器端 不起作用 什么数据表不能使用内连接 如果可以 如何修复我的代码 再说一遍 如何使用内连接在数据表中主动搜索数据 非常感谢
  • 尝试进一步了解OCaml的接口/模块

    我理解 OCaml 中有以下概念interfaces and module 我现在明白如何使用它们了 然而 我不明白的是如何充分利用它们 例如 在 Java 中 假设我们有一个接口Map我们还有Hashtable and HashMap实施
  • 使用嵌套列表进行分组和求和

    我有嵌套列表 我正在尝试使用 java 流和收集器进行分组和求和以获得所需的结果 这样我就无法循环多个SubAccounts 我必须使用 for 循环或其他一些逻辑 我想使用streams api来实现 有没有可能 Map