java 8流分组和求和双精度

2023-12-14

我对 java 8 中的流非常陌生,所以我的方法可能是错误的。

我有 2 个对象如下

object1 {
    BigDecimal amount;
    Code1 code1;
    Code2 code2;
    Code3 code3;
    String desc;
}

object2 {
    BigDecimal amount;
    Code1 code1;
    Code2 code2;
    Code3 code3;
}

所以我想收集所有 code1 && code2 && code3 相同的 object1,然后将其金额求和添加到 object2 列表中。

我没有代码可以做到这一点...我想编写一个可以完成这项工作的代码 我正在尝试实施一些东西http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html

或者按部门计算所有工资的总和:

// Compute sum of salaries by department
Map<Department, Integer> totalByDept = employees.stream()
.collect(Collectors.groupingBy(Employee::getDepartment,
Collectors.summingInt(Employee::getSalary)));

感谢 JB Nizet 为我指明了正确的方向。 我必须修改我的对象2

public class CodeSummary {
    Double amount;
    CodeKey key;
//getters and setters

}
public class CodeKey {
    String code1;
    String code2;
    String code3;
//getters and setters

@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof CodeKey)) return false;

        CodeKey that = (CodeKey) o;

        if (!code1.equals(that.code1)) return false;
        if (!code2.equals(that.code2)) return false;
        if (!code3.equals(that.code3)) return false;

        return true;
    }

@Override
public int hashCode() {
    int result = code1.hashCode();
    result = 31 * result + code2.hashCode();
    result = 31 * result + code3.hashCode();
    return result;
}

}

迭代 object1 并填充 object2。一旦我填充了我的 object2 (现在是 codeSymmary)。我可以使用下面的方法来完成这项工作。

        Map<CodeKey, Double> summaryMap = summaries.parallelStream().
                collect(Collectors.groupingBy(CodeSummary::getKey,
                Collectors.summingDouble(CodeSummary::getAmount))); // summing the amount of grouped codes.

如果有人用这个作为例子。然后确保您覆盖关键对象中的 equal 和 hashcode 函数。否则分组将不起作用。

希望这对某人有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 8流分组和求和双精度 的相关文章

随机推荐

  • 访问 Web 服务的客户端的传入 IP 地址

    我有一个 Web 服务 WCF 并在 IIS 中配置它 现在 有什么方法可以查看尝试访问 Web 服务的客户端 IP 地址 传入 吗 Thanks 请参阅 Keyvan Nayyeri 关于该主题的精彩博客文章 在 WCF 3 5 中检测客
  • 用于选择和取消选择电子表格中所有其他复选框的复选框

    我有一个电子表格 其中包含每个行项目的复选框 我想在顶部放置一个复选框 当选择 取消选择电子表格时 该复选框将选择和取消选择电子表格中的所有其他复选框 以下是我到目前为止的代码 如果选择了 复选框 1 它将选择所有复选框 但如果取消选择 则
  • 如何使用 Roxygen 正确记录来自不同包的泛型的 S3 方法?

    我正在编写一个包 定义一个新类 测量员和print方法 即print surveyor 我的代码工作正常 我使用 roxygen 进行内联文档 但R CMD check发出警告 函数 方法的用途 文档对象 print surveyor 但不
  • 使用数据注释指定日期时间的格式?

    我的视图模型中有这个属性 DataType DataType DateTime public DateTime StartDate get set 如果我想显示日期 或用日期填充文本框 我有这些 每当显示日期时 都会显示如下 01 01 2
  • 为什么 psycopg2 INSERT 需要这么长时间才能循环运行以及如何加快速度?

    我正在尝试在 for 循环中使用 psycopg2 INSERT 将 source lat source long destination lat destination long 行从 Pandas 数据帧插入到 PostgreSQL 表
  • 将编码信息添加到 FOR XML 的结果中[重复]

    这个问题在这里已经有答案了 我有一个脚本 它在 SQL 2008 中使用 FOR XML 返回 XML 有没有办法在输出的开头添加版本和编码信息 最终 我计划将输出保存在文件中 例如 现在我的输出看起来像这样
  • Google Admin sdk 目录 403

    我正在尝试将 googleapi 2 0 与服务帐户一起使用 以在企业域上的用户上使用 Directory gooogle admin sdk 我已按照建议进行操作 this例如 并准备了一个 希望工作 的poc java代码 像这样的东西
  • Cocos2dx Android 构建错误:“arm-linux-androideabi-g++:没有这样的文件或目录”

    我下载了最新的cocos2dx 3 10 和NDK r11 我执行的时候出现以下错误cocos compile p android android studio Error AndroidDev android ndk r11 toolch
  • Delphi 代码格式化程序

    是否有任何实用程序可以重新格式化 Delphi 代码 EDIT 我使用的是德尔福2006 一些反馈 感谢所有回答这个问题的人 我一直在使用 JCF 代码格式化程序 它运行良好 我的代码已格式化为对象 Pascal 风格指南 您可以尝试 绝地
  • 如何使用 php 和 jquery 验证向导表单?

    简要说明这个简单的 jQuery 向导如何工作 会话用于保存每个步骤的数据 由一个会话变量组成 用于保存我们所处的步骤 由一个用于存储表单数据的会话变量组成 每次更改步骤时 我们都会使用 ajax 请求保存表单数据和会话中的步骤 如果数据被
  • Python-要列出的字符串

    我需要将列表转换为字符串并将字符串返回到列表 有一种 python 方法可以实现这种行为吗 l1 aa bb cc s str l1 l2 cast string to list s print l2 aa bb cc 使用序列化库 例如j
  • 这是在 ES6 中克隆对象的好方法吗?

    谷歌搜索 javascript克隆对象 带来了一些非常奇怪的结果 其中一些已经过时了 有些太复杂了 是不是很简单 let clone original 这有什么问题吗 这很好用于浅克隆 The 对象传播是 ECMAScript 2018 的
  • LLVM插入内在函数Cos

    我正在尝试将内部 cos 函数调用插入到 LLVM pass 我在 FunctionPass 中的代码 std vector
  • jquery 验证器 - 即使无效,表单仍然会被提交

    我的表单上有一些带有基本规则的字段 验证器插件在填写表单本身时表现良好 但是 提交时会出现问题 因为即使尚未输入有效的电子邮件地址或在其他文本框中输入任何内容之前 它仍然会提交 这是我的测试功能 function submit form c
  • 将 Python win32evtlog 对象转换为 xml

    我有一个使用 win32evtlog 来获取和显示不同事件的应用程序 我想将显示限制为特定级别的事件 但 win32evtlog 不会返回此信息 似乎您可以将事件转换为 XML 然后提取此信息 但我无法弄清楚如何将事件从循环获取到 XML
  • Threetenbp:解析带有时区名称的日期时出现解析异常

    我正在尝试解析 EEE dd MMM yyyy HH mm ss zzz 格式的日期 例如使用 Threeten 的 DateTimeFormatter 的 Tue 16 May 2017 07 44 48 GMT 之类的字符串 但是 似乎
  • 检查 DirectoryInfo.FullName 是否是特殊文件夹

    我的目标是检查 DirectoryInfo FullName 是否是特殊文件夹之一 这就是我正在做的事情 检查每个特殊文件夹的directoryInfo FullName 如果它们相等 DirectoryInfo directoryInfo
  • 跨进程PostMessage、UIPI限制和UIAccess=”true”

    出于安全原因 我的应用程序的 UI 模块使用high 强制完整性级别 除了一件事之外 其中的所有内容都运行良好 为了与旧版本兼容 我需要能够让用户向 UI 模块发出命令行调用 目前该机制的工作原理如下 Windows 资源管理器中的快捷方式
  • firebase:admin.auth().updateUser()导致auth/user-token过期

    我成功使用电话号码进行了身份验证 我可以检查firebase auth currentUser我已经登录了 然后我调用我的 firebase 管理路由admin auth updateUser uid somevalues 设置用户显示名称
  • java 8流分组和求和双精度

    我对 java 8 中的流非常陌生 所以我的方法可能是错误的 我有 2 个对象如下 object1 BigDecimal amount Code1 code1 Code2 code2 Code3 code3 String desc obje