我应该更喜欢迭代 Map.entries 还是 Map.values?

2023-12-22

每次我需要迭代 a 的值时Map在 Dart 中,我考虑了这个循环将产生的成本,包括复杂性和产生的垃圾量。有两种方法可以迭代 a 的值Map: Map.values, and Map.entries。例如:

Map<String, Person> people;

int olderThan(int age) {
  int result = 0;
  for(Person p in people.values)
    if(p.age > age) result++;
  return result;
}

int olderThan2(int age) {
  int result = 0;
  for(MapEntry<String, Person> me in people.entries)
    if(me.value.age > age) result++;
  return result;
}

// Which one is faster: olderThan or olderThan2?

If Map将其值内部存储为MapEntry对象,有可能entries与以下一样有效甚至更高values。实施细则Map都深埋在 Dart 库中,所以我想知道是否有人拥有这方面的知识并且可以阐明这个主题。

我明白那个Map.entries使您可以访问密钥,但我谈论的是不需要使用条目密钥的情况。我也明白有不同的实现Map。我最感兴趣的是默认实现,LinkedHashMap,但如果知道不同之间是否存在差异就好了Map这方面的实施。


我们应该根据需求迭代地图。

  1. 如果我们只需要迭代键

    map.keys.forEach((k) => print("Key : $k"));

  2. 如果我们只需要迭代值

    map.values.forEach((v) => print("Value: $v"));

  3. 如果我们需要迭代两个键值。

    map.forEach((k, v) => print("Key : $k, Value : $v"));

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

我应该更喜欢迭代 Map.entries 还是 Map.values? 的相关文章

随机推荐

  • 设置吐司显示长度

    无论如何 我是否可以告诉 Toast 通知仅在指定的时间内显示 通常比常规的 Toast 消息要短 我通过在比标准 toast 持续时间短的一定延迟后调用 toast cancel 找到了解决方案 final Toast toast Toa
  • 如何使溢出 CSS 属性与隐藏值一起使用

    我正经历着一段艰难的时光overflow hidden 基本上 我试图隐藏位于 div 我不知道为什么这不起作用 它没有隐藏它 而是将我的列表从水平布局打破为垂直布局 无序列表是轮播 容器是列表 下面是我的 CSS 代码 div body
  • 可见性会影响 DOM 操作性能吗?

    IE7 Windows XP 我的页面中有一个第三方组件 它会在每次调整浏览器窗口大小时进行大量 DOM 操作来调整自身 不幸的是 我几乎无法控制它的内部功能 并且我已经尽可能地优化了其他所有内容 例如回调和事件处理程序 我无法通过设置 d
  • Swift - 将数组中的值转换为双精度或浮点数

    我有一个数组 其值是字符串 但所有字符串都是 1 0 2 0 等值 我正在尝试将这些字符串转换为双精度数或浮点数 以便我可以将它们全部加在一起 我如何快速做到这一点 let x 1 0 1 5 2 0 print x map Double
  • react-select:如何将 optionRenderer 属性与异步组件一起使用?

    我正在使用反应选择来创建一个选择框 对地址进行地理编码 然后提供该搜索返回的相应地方政府区域的下拉列表 我只是想格式化每个选项 以便它显示状态 例如 昆士兰州在当地政府区域之后 例如 布里斯班 所以我试图让它返回类似的内容 Brisbane
  • Sagemaker 的 IAM 角色?

    我正在尝试让 AWS SageMaker 调用 AWS Comprehend 我在 SageMaker 中收到此消息 ClientError 调用时发生错误 AccessDeniedException StartTopicsDetectio
  • 使用 Ruby 连接到 Oracle 数据库

    我一直无法连接到 Oracle DB 已经阅读了很多内容 但对结果没有任何帮助 我有远程 Oracle DB 我使用 DBVisualizer 设置连接来连接到它 如下所示 DB Type Oracle Driver jdbc Oracle
  • 手机启动时是否可以启动Android应用程序活动?

    我正在尝试构建一个Android应用程序 该应用程序的关键功能之一是它能够在手机启动时自动启动一个活动 我看到我手机上的一些应用程序已经做到了这一点 任何帮助都会很棒 所以我至少可以通过 sdk 对此进行更好的研究 谢谢 您需要像这样实现
  • 使用 tweepy 访问 Twitter 的 Streaming API

    我目前无法获取使用 tweepy 访问 Twitter 的 Streaming API 的示例代码以正确运行 呃 或者至少是我期望它如何运行 我正在使用 GitHub 上最近克隆的 tweepy 标记为版本 1 9 和 Python 2 7
  • 带索引的 Ruby `each_with_object`

    我想要做a each with object with index 以比这更好的方式 a w a b c a each with index each with object arr hash v i arr puts i is i v i
  • 为什么jQuery的.data()函数更能防止内存泄漏?

    关于 jQuery 实用函数 jQuery data 在线文档说 jQuery data 方法允许我们 将任何类型的数据附加到 DOM 元素以安全的方式 循环引用 因此来自 内存泄漏 为什么使用 document body foo 52 可
  • 如何捕获svn合并信息

    我已经检查了主干并完成了从分支到主干的合并 现在 分支中所做的所有更改都存在于我的主干工作副本中 如果我对此工作副本进行提交 有什么方法可以稍后识别它是合并而不是像正常的签出 修改 签入 我可以在日志中指定合并详细信息 但我感兴趣的是 SV
  • 带有一般错误的 Typescript 缩小类型

    有人可以帮我理解这里发生了什么吗 TS游乐场 https www typescriptlang org play code C4TwDgpgBACghgJzgWwDwHkzAJYHsB2AzgHxQC8UA3gLABQUUA2gNJTb5Q
  • Cypher 返回总节点数以及有限集

    是否可以在单个密码查询中提取有限的节点集和节点总数 match n Molecule with n count as nb limit 10 return N nb nodes collect n 上述查询正确返回节点 但返回 1 作为节点
  • C++ 向量计算每个元素的出现次数

    我有一个向量类型vector
  • Swagger ApiModelProperty 不起作用

    我有一个问题 ApiModelProperty大摇大摆地 在我的模型中 我使用 ApiModelProperty像这样 private static final long serialVersionUID 71421061972620104
  • 编码 UI 测试 - 无法解析符号 UITesting

    我正在尝试在 VS2012 项目中使用这样的程序集 using Microsoft VisualStudio TestTools UITesting using Microsoft VisualStudio TestTools UnitTe
  • 有没有办法使用 Google Drive API 下载大于 10MB 的文档? [复制]

    这个问题在这里已经有答案了 我想下载大于 10MB 的文件 doc使用 Google Drive API 的文件 我知道使用 Google Drive API 时导出和下载之间的区别 我可以下载具有二进制内容的文件 无限制 我应该使用exp
  • 如何从 AngularJS 异步验证器返回错误上下文信息?

    我正在使用 1 3 中引入的新 AngularJS 异步验证器功能 我有一个看起来像这样的指令 angular module app directive usernameValidator function API ENDPOINT htt
  • 我应该更喜欢迭代 Map.entries 还是 Map.values?

    每次我需要迭代 a 的值时Map在 Dart 中 我考虑了这个循环将产生的成本 包括复杂性和产生的垃圾量 有两种方法可以迭代 a 的值Map Map values and Map entries 例如 Map