如何使用 lambda 获取哈希映射中值的键数

2024-03-20

我有一个哈希图

Map<Integer, List<String>> Directmap = new HashMap<Integer, List<String>>() {{
    put(0, Arrays.asList(a, b));
    put(1, Arrays.asList(b, c));
    put(2, Arrays.asList(d));
    put(3, Arrays.asList(d, e));
    put(4, Arrays.asList(e));
    put(5, Arrays.asList());
}};

Directmap: {0=[a, b], 1=[b, c], 2=[d], 3=[d, e], 4=[e], 5=[]}

我想计算每个值的键数。例如:"a"有一把钥匙,"b"有两把钥匙,...,"e"有两个键,即 3 和 4。

我尝试过这样的事情:

Map<Object, Long> ex = Directmap.entrySet().stream()
            .collect(Collectors.groupingBy(e -> e.getKey(), Collectors.counting()));

我想要带有键数的值作为输出。像这样 :

a=[1], b=[2], c=[1], d=[2], e=[2]

您可以通过平面映射地图的每个值来完成此操作。

在此代码中,仅保留映射的值(因为您对键不感兴趣)。每个值是一个List<String>是平面映射的,因此 Stream 管道是Stream<List<String>>变成Stream<String>。最后,流按 (groupingBy https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html#groupingBy-java.util.function.Function-java.util.stream.Collector-)恒等函数和对元素执行的归约只是计算出现的次数(counting() https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html#counting--).

Map<String, Long> ex = 
      Directmap.values()
               .stream()
               .flatMap(Collection::stream)
               .collect(Collectors.groupingBy(v -> v, Collectors.counting()));

请注意,如果一个值在初始映射中出现两次,它也会被计数两次。如果你想计算不同值的数量,你可以添加一个调用distinct() https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#distinct--在收集结果之前(或使用Set代替List).

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

如何使用 lambda 获取哈希映射中值的键数 的相关文章

随机推荐

  • NHibernate Session.SetReadOnly

    我面临着其他人已经在 SO 上发布的同样问题 在从数据库读取对象时 NHibernate 会更新所有对象 因为数据库中一个字段的值不正确 详细来说 新添加的日期列在所有行中都包含 1 1 0001 因此在映射时 NHibernate 会替换
  • jQuery URL 分割和抓取

    所以我有一个 URL 并且我知道如何从 URL 获取 GET 但我的 URL 是http www example com edit 2695 有没有办法抓取网址并在之后吐出部分 我想要编辑和 ID 您可以使用此代码 var url http
  • Django 时间问题

    我在 django 中的应用程序需要告诉用户操作发生的时间 除了询问用户他 她所在的时区之外 我是否可以在客户端生成时间 在我的脑海中 是否有一个与时区无关的时间的特定表示 unix时间 然后我可以简单地将其粘贴到html中并让客户端 浏览
  • 如何为该月中的几天提供后缀?

    我需要一个函数在显示 等文本时返回几天的后缀th in Wednesday June 5th 2008 它只需要处理数字 1 到 31 不需要错误检查 和英语 这是一个也适用于更大数字的替代方案 static const char dayS
  • R - 从 URL/HTML 对象/HTML 响应写入 HTML 文件

    我想使用 R 中的 URL 保存 HTML 文件 我尝试在使用后保存响应对象GET and read html的功能httr and rvest分别打包到网站的 URL 上 我想保存 的 HTML 但这并不能保存网站的实际内容 url ht
  • 带有 async/await 的 try/catch 块

    我正在深入研究节点 7async await功能并不断绊倒这样的代码 function getQuote let quote Lorem ipsum dolor sit amet consectetur adipiscing elit la
  • 是否有获取最新 Microsoft Edge 版本号的链接?

    我正在寻找一个链接来获取 Microsoft Edge 的最新驱动程序版本号 类似于 Google Chrome 的链接 https chromedriver storage googleapis com LATEST RELEASE ht
  • Swift 3:在 collectionView 中缓存图像

    我目前正在开发我的应用程序 将其更新为与 Swift 3 兼容 但还剩下一个问题 以前 我的图像缓存工作得很好 但自从更新后UIImageView获取图像时不会填充 s 这是代码 在 cellForItemAt 功能 if let img
  • 资源未发现异常?

    我从 android 市场收到崩溃报告 android content res Resources NotFoundException Resource ID 0x 我每周收到大约 17 个这样的东西 它指出我的代码中的以下内容 conte
  • 如何将 JDK GregorianCalendar 对象日期与 Joda 一起使用

    我正在尝试使用 Joda 库 因为使用 Java 本机方法计算周期是一件令人头疼的事情 而且我所有的尝试都给出了不精确的结果 我看过这个样本 int n Days daysBetween start toLocalDate end toLo
  • 如何使用外部vue npm组件

    我是 Vue js 的新手 目前正在尝试在现有解决方案中使用它 我不可能使用 vue 文件 它是一个独立的系统 不使用 webpack 我需要本地文件才能使其正常工作 在下面的例子中 我在线使用了 js 我想使用这个日期选择器 https
  • 在 RAFT 中,是否有可能对某个日志条目达成多数共识,但该条目尚未提交?

    考虑一下官方的这个模拟筏网页 https raft github io Why is term 2 index 1尽管没有承诺S2 leader S3 and S4同意日志吗 我运行了几分钟以确保所有通信均已完成 奇怪的是 如果我再添加一个
  • 内容安全策略:“img-src'self'数据:”

    我有一个应用程序 用户可以在其中复制图像 URL 将其粘贴到输入中 然后图像将加载到框中 但我的应用程序不断触发此消息 拒绝加载图像 LOREM IPSUM URL 因为它违反了以下内容安全策略指令 img src self data 这是
  • Autohotkey 错误的击键发送到控制台

    我正在尝试理解这个错误并寻找解决方法 使用这个脚本 NoEnv SingleInstance force SendMode Input Alt t to send keystrokes t Send It send the correct
  • 张量流将预测作为 b64 输出顶部结果

    我有一个 Keras 模型 我将其转换为张量流服务模型 我可以成功地将预训练的 keras 模型转换为采用 b64 输入 预处理该输入并将其提供给我的模型 我的问题是我不知道如何获取我得到的预测数据 这是巨大的 并且只导出最高结果 我正在进
  • 如何设置 Eclipse/RCP 装饰器的颜色?

    我在 Eclipse RCP 应用程序中向我的树查看器项目添加了一个装饰器插件 xml
  • 如何从 bash 脚本发送 control+c?

    我在 bash 脚本中启动多个屏幕 然后运行 djangorunserver命令他们每个人 我也希望能够以编程方式阻止它们 这需要我发送Control c to runserver 如何从 bash 脚本发送这些击键 Ctrl C send
  • 在 Intellij 内的项目之间共享数据库

    我使用 Intellij 来检查数据库 运行 sql 查看表中的数据等 这一切都工作正常 但我唯一缺少的是能够一次定义这些数据源并在我的所有项目中查看它们 即我可以在其他项目之间共享它们项目 而不必为新项目重新定义它们 这在 Intelli
  • 任何嵌入式文档查看器

    我希望在我的 CakePHP 应用程序中包含一个文档查看器 用于上传文档 我想要一个支持 Microsoft Word DOC 和 DOCX Microsoft PowerPoint PPT 和 PPTX 和 Adob e 便携式文档格式
  • 如何使用 lambda 获取哈希映射中值的键数

    我有一个哈希图 Map