如何在 java 8 中展平地图列表

2023-11-23

我有要求,我有地图列表

[{Men=1},{Men=2, Women=3},{Women=2,Boys=4}]

现在我需要将其设为 flatMap,使其看起来像

Gender=countOfValues

在上面的例子中,输出将是

{Men=3,Women=5,Boys=4}

目前我有以下代码:

private Map<String, Long> getGenderMap(
        List<Map<String, Long>> genderToCountList) {
    Map<String, Long> gendersMap = new HashMap<String, Long>();
    Iterator<Map<String, Long>> genderToCountListIterator = genderToCountList
            .iterator();
    while (genderToCountListIterator.hasNext()) {
        Map<String, Long> genderToCount = genderToCountListIterator.next();
        Iterator<String> genderToCountIterator = genderToCount.keySet()
                .iterator();
        while (genderToCountIterator.hasNext()) {
            String gender = genderToCountIterator.next();
            if (gendersMap.containsKey(gender)) {
                Long count = gendersMap.get(gender);
                gendersMap.put(gender, count + genderToCount.get(gender));
            } else {
                gendersMap.put(gender, genderToCount.get(gender));
            }
        }
    }
    return gendersMap;
}

我们如何使用Java8使用lambda表达式来编写这段代码呢?


我不会为此使用任何 lambda,但我已经使用了Map.merge和方法参考,两者都是在 Java 8 中引入的。

Map<String, Long> result = new HashMap<>();
for (Map<String, Long> map : genderToCountList)
    for (Map.Entry<String, Long> entry : map.entrySet())
        result.merge(entry.getKey(), entry.getValue(), Long::sum);

你也可以这样做Streams:

return genderToCountList.stream().flatMap(m -> m.entrySet().stream())
           .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Long::sum));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 java 8 中展平地图列表 的相关文章

随机推荐

  • TypeError:不是函数打字稿类

    我在打字稿类中收到以下错误 并且无法理解原因 我所做的就是尝试调用传递令牌的辅助函数 Error 发布错误 TypeError this storeToken 不是函数 Class Authentication Service Contai
  • 按升序排序,但最后保留零

    假设我有一个矩阵A 在下面的表格中 A 35 1 6 3 32 0 0 9 0 0 0 0 我想按升序排序 但最后保留零 我知道我可以用所有零替换inf 排序 然后替换infs 再次为零 如中所提议的这个问题 我认为有一个更简单的方法 至少
  • StyleCop/FxCop 10 - 如何仅在命名空间级别正确抑制消息?

    FxCop 10 抱怨以下内容 using XYZ Blah CA1709 XYZ using Xyz Blah No complaint using XylophoneSuperDuperLongFullName Blah I don t
  • ABAP CDS 视图中的可选参数?

    我正在尝试创建一个 CDS 视图以供使用可选参数的使用 但目前不支持可选参数 是否有一种解决方法可以根据输入参数以某种方式选择要执行 使用哪些 where 子句 你检查了吗消耗 defaultValue注解 请看一下参考文件
  • 解析日期时间,时区格式为 PST/CEST/UTC/etc

    我正在尝试解析类似于以下内容的国际日期时间字符串 24 okt 08 21 09 06 CEST 到目前为止我已经得到了类似的东西 CultureInfo culture CultureInfo CreateSpecificCulture
  • jQuery DataTables - 通过精确匹配过滤列

    尝试仅显示与搜索栏中输入的搜索词完全匹配的内容 例如 我有一个按 ID 进行过滤的搜索栏 我只想显示与输入的确切 匹配的记录 So if 123已输入 我不想要12345 91239等要显示的内容 仅有的123 看到一些关于bRegex在常
  • 如何将 AES 初始化向量传递给混合密码系统的客户端

    我需要实现客户端 服务器通信的安全性 我已经实施了以下混合密码系统 为了在混合密码系统中加密发送给 Alice 的消息 Bob 执行以下操作 获取Alice的公钥 为数据封装方案生成新的对称密钥 使用刚刚生成的对称密钥在数据封装方案下加密消
  • Ajax Control Toolkit 加载了太多脚本资源

    我创建了一个新项目 我从 NuGet 安装了 Ajax Control Toolkit 然后我使用以下代码创建了一个新页面 aspx
  • 如何从多类分类的混淆矩阵中提取假阳性、假阴性

    我正在使用以下 Keras 代码对 mnist 数据进行分类 从confusion matrix的命令sklearn metrics我得到了混淆矩阵并且来自TruePositive sum numpy diag cm1 命令我能够得到真阳性
  • 使用堆栈的非递归深度优先搜索 (DFS)

    好吧 这是我在 Stack Overflow 上的第一篇文章 我已经阅读了一段时间并且非常欣赏这个网站 我希望这是可以接受的问题 所以我一直在阅读 算法简介 Cormen MIT Press 并且我已经了解了图形算法 我一直在非常详细地研究
  • 将逗号分隔值转换为双引号逗号分隔字符串

    我有一个逗号分隔的值 例如 alpha beta charlie 我怎样才能将它转换为 alpha beta charlie 在 php 中使用单个函数而不使用str replace Richard Parnaby King 函数的替代方案
  • 如何检查字符串是否以 Java 字符串列表中的任何条目结尾

    我有一个文件名和扩展名列表 我想检查文件名是否以列表中的任何扩展名结尾 String fileName abc txt String extensions txt doc pdf 我可以手动检查扩展名列表 并检查文件是否以列表中的任何扩展名
  • 使用 Sublime Text 2 进行特定于语法的突出显示

    我想知道是否有一种方法可以为同一文件中的不同语言标签提供两种不同的标签颜色 美国的 颜色 例如 假设我在同一个 cfm 文件中具有 ColdFusion 代码和 HTML 代码 我可以将 ColdFusion 标签设为红色 将 HTML 标
  • 在 AVFoundation 中捕获缩放预览视图

    我正在使用 AVFoundation 相机中的缩放功能 我通过缩放具有 AVCaptureVideoPreviewLayer 的视图来实现缩放 现在我想捕捉缩放图像 这是我添加 AVFoundation Video PreviewLayer
  • 当 DataTables 表加载 Ruby on Rails 时显示微调器

    我使用 Rails 构建了一个网络应用程序 Web 应用程序的其中一个页面显示了一个表格 该表格使用数据表API This JSFiddle显示了我的网络应用程序的示例 问题在于 当我开始添加大量数据 当前测试数据为 1500 行 时 表会
  • Google 图表 - 仪表图动画不起作用

    我正在尝试使用 Google Graphs 创建一些 GAUGE 图表 我的目标是从 php 页面加载数据并自动刷新 我能够做到这一点 但是当刷新数据时 仪表线不是动画的 而是从新的重新绘制的 我希望看到这样的酷动画 https jsfid
  • Room 如何转换定制对象

    我是 Room 的新手 我不明白应该如何解决这个问题 我有一个实体Movie另一个实体称为 pcomingMovies Entity public class Movie PrimaryKey NonNull public String i
  • 对于 Internet 上的 WCF 服务来说,传输安全性是一种不好的做法吗?

    我有一个可通过 Internet 访问的 WCF 服务 它具有 wsHttpBinding 绑定和消息安全模式 并使用用户名凭据来验证客户端 msdn说我们应该在Internet场景中使用消息安全 因为它提供端到端的安全 而不是像传输安全那
  • 在 __del__ 中关闭/处理对象真的可以吗?

    我一直在思考如何用Python编写类 更具体地说 构造函数是如何实现的以及对象应该如何被销毁 我不想依赖 CPython 的引用计数来进行对象清理 这基本上告诉我应该使用 with 语句来管理我的对象生命周期 并且我需要一个显式的 clos
  • 如何在 java 8 中展平地图列表

    我有要求 我有地图列表 Men 1 Men 2 Women 3 Women 2 Boys 4 现在我需要将其设为 flatMap 使其看起来像 Gender countOfValues 在上面的例子中 输出将是 Men 3 Women 5