如何通过获取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

思路:利用反射获取hashmap里的threshold(扩容上限)除以 负载因子 就得到容器大小了。

打印结果如下:

160

320

640

1280

2560

5120

10240

20480

这是hashmap添加1000个元素时容器容量大小的变化情况

使用jstl标签c:forEach

第一步:引入标签<%@ taglib prefix="c" uri=">

C++ 获取map元素的代码如下:

#include<map>

#include<string>

#include<iostream>

int   main()

{

map<string,int>   words;

map<string,int>::iterator   it=wordsbegin();

for(;it!=wordsend();++it)

cout<<"key:"<<it->first

<<"value:"<<it->second<<end1;

return   0;

}Top

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。

在C++中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。

在面向对象的程序设计中,将数据和对该数据进行合法 *** 作的函数封装在一起作为一个类的定义。对象被说明为具有一个给定类的变量。每个给定类的对象包含这个类所规定的若干私有成员、公有成员及保护成员。完好定义的类一旦建立,就可看成完全封装的实体,可以作为一个整体单元使用。类的实际内部工作隐藏起来,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它即可。

map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个 *** 作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。

以上就是关于如何通过获取map中的key来获得与key对应的value值,进行运算全部的内容,包括:如何通过获取map中的key来获得与key对应的value值,进行运算、打印HashMap扩容时的容量大小、怎么在jsp页面获取每个Map中key所对应的value值得 size啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存