如何通过获取map中的key来获得与key对应的value值,进行运算

如何通过获取map中的key来获得与key对应的value值,进行运算,第1张

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

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

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

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

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

两种方法对比测试如下:

HashMap测试数据:

TreeMap测试数据:

扩展资料:

mapkeySet()和mapEntrySet()的比较:

一、如果使用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方法。

参考资料:

百度百科——Map

java Map 遍历一般有四种方式

方式一: 这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。

方式二: 在for-each循环中遍历keys或values。

如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。

该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。

方式三:使用Iterator遍历

使用泛型:

不使用泛型:

你也可以在keySet和values上应用同样的方法。

方法四:  通过键找值遍历(效率低)

作为方法一的替代,这个代码看上去更加干净;但实际上它相当慢且无效率。

因为从键取值是耗时的 *** 作(与方法一相比,在不同的Map实现中该方法慢了20%~200%)。如果安装了FindBugs,它会做出检查并警告你关于哪些是低效率的遍历。所以尽量避免使用。

总结:

如果仅需要键(keys)或值(values)使用方法二。

如果所使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。

否则使用方法一(键值都要)。

扩展资料:

类似的遍历算法:

二叉树的遍历算法

1、先(根)序遍历的递归算法定义:

若二叉树非空,则依次执行如下 *** 作:

⑴ 访问根结点;

⑵ 遍历左子树

⑶ 遍历右子树。

2、中(根)序遍历的递归算法定义:

若二叉树非空,则依次执行如下 *** 作:

⑴遍历左子树;

⑵访问根结点;

⑶遍历右子树。

3、后(根)序遍历得递归算法定义:

若二叉树非空,则依次执行如下 *** 作:

⑴遍历左子树;

⑵遍历右子树;

⑶访问根结点。

参考资料:

百度百科——Java

有两种方法:

1如果用的Struts 2,那么可以使用<s:select>标签

<s:select list = "yourlist" listKey="key" listValue="value"/>

2可以用JSTL标签的核心标签

<select>

<c:forEach items="" var="">

<option></option>

</c:forEach>

</select>

以上就是关于如何通过获取map中的key来获得与key对应的value值,进行运算全部的内容,包括:如何通过获取map中的key来获得与key对应的value值,进行运算、java Map 怎么遍历、将map值封装到list,怎么在jsp页面循环取出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10182344.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存