展开全部

获取map的key和value的方法分为以下62616964757a686964616fe4b893e5b19e31333366306439两种形式:

1、map.keySet():先获取map的key,然后根据key获取对应的value;

2、map.entrySet():同时查询map的key和value,只需要查询一次;

注意:当map的value值相等时,根据key值进行排序

很多人都推荐使用entrySet,认为其比keySet的效率高很多。理由是:entrySet方法一次拿到所有key和value的集合;而keySet拿到的只是key的集合,针对每个key,都要去Map中额外查找一次value,从而降低了总体效率。

两种方法对比测试如下:

HashMap测试数据:

TreeMap测试数据:

扩展资料:

map.keySet()和map.EntrySet()的比较:

一、如果使用HashMap

1、同时遍历key和value时,keySet与entrySet方法的性能差异取决于key的具体情况,如复杂度(复杂对象)、离散度、冲突率等。换言之,取决于HashMap查找value的开销。

entrySet一次性取出所有key和value的操作是有性能开销的,当这个损失小于HashMap查找value的开销时,entrySet的性能优势就会体现出来。

在比测试中,当key是最简单的数值字符串时,keySet可能反而会更高效,耗时比entrySet少10%。总体来说还是推荐使用entrySet。

因为当key很简单时,其性能或许会略低于keySet,但却是可控的;而随着key的复杂化,entrySet的优势将会明显体现出来。当然,我们可以根据实际情况进行选择

2、只遍历key时,keySet方法更为合适,因为entrySet将无用的value也给取出来了,浪费了性能和空间。在上述测试结果中,keySet比entrySet方法耗时少23%。

3、只遍历value时,使用vlaues方法是最佳选择,entrySet会略好于keySet方法。

二、如果使用TreeMap

1、同时遍历key和value时,与HashMap不同,entrySet的性能远远高于keySet。这是由TreeMap的查询效率决定的,也就是说,TreeMap查找value的开销较大,明显高于entrySet一次性取出所有key和value的开销。因此,遍历TreeMap时强烈推荐使用entrySet方法。

2、只遍历key时,keySet方法更为合适,因为entrySet将无用的value也给取出来了,浪费了性能和空间。在上述测试结果中,keySet比entrySet方法耗时少24%。

3、只遍历value时,使用vlaues方法是最佳选择,entrySet也明显优于keySet方法。

参考资料:

vue取通过key取value_如何通过获取map中的key来获得与key对应的value值,进行运算...相关推荐

  1. json vue 出现次数_Vue 如何从两个 JSON 中遍历数据, 根据相同的 Key 为 DOM 赋值?

    现有数据1 shipTypes { "Destroyer": "驅逐艦", "AirCarrier": "航空母艦", ...

  2. java map取第一个元素_Java 8从Map中的匹配值中提取第一个键

    假设我有一个给定名称,姓氏对的地图,并且我想要找到该地图中具有匹配一定值的姓氏的第一个条目的给定名称. 我们将如何以 java 8方式做到这一点. 在我下面的测试用例的例子中,我提出了两种方法. 然而 ...

  3. java map 随机取值_随机获取一个集合(List, Set)中的元素,随机获取一个Map中的key或value...

    利用Java提供的Random类.从List或Set中随机取出一个元素,从Map中随机获取一个key或value. 因为Set没有提供get(int index)方法,仅仅能先获取一个随机数后.利用一 ...

  4. java map 如何根据key获得对象_ThreadLocal:Java中的影分身

    关于ThreadLocal,你有哪些疑问? ThreadLocal是用来解决什么问题的? 如何使用ThreadLocal? ThreadLocal的实现原理是什么? 可否举几个实际项目中使用Threa ...

  5. Java获取map中key和value的方法

    最近项目技术转型,开始使用java来写需求.需求中碰到需要获取map中key和value的地方,网络上查了下,得到了解决方法.为防止遗忘,故记录于此. java中获取map中key和value的方式有 ...

  6. vue使用参数直接取到data数据

    vue使用参数直接取到data数据 upRecvQtyStatus (row, name) {console.log(this._data[name]) // this._data就是data本身th ...

  7. #{key}和${key} 取值的区别

    mybatis中 #{key}和${key} 取值的区别 mapper映射文件 <select id="selectUser" resultType="com.rp ...

  8. Java stream 处理分组后[升降序key]取每组最大

    Java stream 处理分组后[升降序key]取每组最大 一. 需求 二. 整活 git仓库直达 如何让同事看不懂你写的代码 然后觉得你非常牛逼 这里用到了stream()与Lambda 需要有点 ...

  9. java map取第一个元素_Java Set接口 Map 与枚举

    Set接口 概述 一个不包含重复元素的 collection.更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素 特点 Set接口是 ...

最新文章

  1. as无效 mysql_MySQL 全文索引实现简单版搜索引擎
  2. vue项目中遇到的一些问题
  3. Blog小技巧之二-让朋友在Blog上也能QQ到自己
  4. 从命令式功能到纯功能性,然后再返回:Monads与范围内的延续
  5. Android学习拾遗
  6. log4net保存到数据库系列二:独立配置文件中配置log4net
  7. C51单片机——指令系统
  8. java函数式 new_Java函数式编程-4.lambda表达式一些高级用法
  9. POJ 2287 田忌赛马 贪心算法
  10. finereport9.0破解版|finereport10.0破解并发数|finereport授权注册|FineBI5.0破解lic
  11. springboot在线银行贷款系统毕业设计源码281444
  12. visio导出图片模糊的解决方案
  13. 如何调用CAD命令行命令?
  14. 大数据和 AI 驱动创新实例分享
  15. win7下搭建外网svn服务器
  16. android 8代号,Android 8.0来了:代号或是“奥利奥”
  17. 锁相放大器在中微流控的应用
  18. 【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习
  19. B站大佬用我的世界搞出卷积神经网络,LeCun转发!爆肝6个月,播放破百万
  20. R语言实战笔记 基本统计分析-频数列联表和简单的独立性检验

热门文章

  1. java连接mysql2008_在Java中如何使用jdbc连接Sql2008数据库(转)
  2. FYR的完整形式是什么?
  3. 字典使用与内部实现原理
  4. Oracle备份文件名获取系统时间的做法(windows)
  5. 第二章 认识计算机硬件
  6. Prometheus 监控Mysql服务器及Grafana可视化
  7. ip,子网与子网掩码
  8. python 界面开发框架_八款常用的 Python GUI 开发框架推荐
  9. 不知道工作组名称怎样加入_剩米饭不知道怎样做?试试泡菜炒饭,再也不用担心米饭做多了...
  10. dw中html颜色的设置颜色代码,Dreamweaver 如何编辑字体大小颜色