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

Set keySet = mapkeySet();//获取map的key值的集合,set集合 for(Object obj:keySet){//遍历key Systemoutprintln("key:"+obj+",Value:"+mapget(obj));//输出键与值 }

1、在对应的JavaScript文件中,定义一个Map数据结构变量m,并分别打印值和类型,如下图所示

2、保存代码并运行,结果发现Map {}以及对象类型(Map是一种对象),如下图所示。

3、接着调用Map数据结构中的set方法,添加5个元素,其中有一个的key值重复了,如下图所示。

4、保存代码并运行,查看控制台打印结果,发现key-value值,如下图所示。

5、使用get()方法获取单个元素,传入的参数是key值。

6、最后保存代码并运行,可以查看到Map数据结构中的value值。

取map的方法跟普通变量一样,都是根据key来获取。

jstl的迭代取值

当forEach 的items属性中的表达式的值是javautilMap时,则var中命名的变量的类型就是 javautilMapEntry。这时var=entry的话,用表达式${entrykey}取得键名。

用表达式${entryvalue}得到每个entry的值。这是因为javautilMapEntry对象有getKey和getValue方法,表达式语言遵守JavaBean的命名约定:

<c:forEach items="${map}" var="entry">

<c:out value="${entrykey}" />

<c:out value="${entryvalue}" />

</c:forEach>

Set<Object> keySet = mapkeySet();//获取map的key值的集合,set集合

for(Object obj:keySet){//遍历key

Systemoutprintln("key:"+obj+",Value:"+mapget(obj));//输出键与值

}

public static void main(String[] args) {

Map<String, String> map = new HashMap<String, String>();

mapput("key1", "value1");

mapput("key2", "value2");

mapput("key3", "value3");

Set<String> keySet = mapkeySet();

int i = mapsize()-1;

Map<Integer, String> mapKey = new HashMap<Integer, String>();

Map<Integer, String> mapValue = new HashMap<Integer, String>();

for(javautilMapEntry<String, String> entry : mapentrySet()) {

//将原来MAP的VALUE放入新的MAP的VALUE里面

mapKeyput(i, entrygetValue());

//将原来MAP的KEY放入新的MAP的VALUE 里面

mapValueput(i, entrygetKey());

i--;

}

//打印KEY值

Systemoutprintln(mapKeyget(2));

//打印VALUE值

Systemoutprintln(mapValueget(0));

}

扩展资料:

java键值对的使用

Map集合没有继承Collection接口,但是其提供了key到value的映射。每一个key不能有相同,每个key只能映射一个value值。

下面通过一个程序来说明键值对的使用,下面是一个基本的键值对应用程序:

package Test;

import javautilCollection;

import javautilHashMap;

import javautilIterator;

import javautilMap;

import javautilSet;

public class KeyValue {

public static void main(String[] args) {

Map <String,String> map=new HashMap<>();

mapput("01", "张三");

mapput("02", "王五");

Set<String> set=mapkeySet();

Iterator <String> it=setiterator();

Systemoutprintln("key中集合元素:");

while(ithasNext()){

Systemoutprintln(itnext());

}

Collection <String> coll=mapvalues();

it=colliterator();

Systemoutprintln("value中集合元素:");

while(ithasNext()){

Systemoutprintln(itnext());

}

}

}

输出结果如图所示:

一个城市的地图是很多仿真中常见的一个情况;我们需要首先获得想要得到城市地图的id号,之后用该id号去该城市地图;

通过 访问 OSM Overpass API query page(),在打开uery框中输入图中所示代码(在代码name处改城市名称);

之后,点击右下角uery,d出提醒,单击保存;完成后,以记事本方式打开该文件;

在打开的文件起始位置,找出城市的id号;

由以上步骤得来Hollywood的城市id号为;但从技术上来讲,这仅是该城市的边界,如果想得到城市的地图,我们需要在该id号基础上加3,600,000,000,得到id最终结果为;

然后,我们继续访问步骤二中的API query page,在打开uery框中输入以下代码(“area-query ref=”的值是我们在上一步得到的值):

步骤阅读

之后,再次点击右下角uery,d出提醒,单击保存;完成后,以记事本方式打开该文件(此文件即Hollywood的城市地图数据),导入到仿真中使用即可;

以上就是关于如何通过获取map中的key来获得与key对应的value值,进行运算全部的内容,包括:如何通过获取map中的key来获得与key对应的value值,进行运算、如何从map对象中取出key相同的数据、c++/STL/map中怎样获取map中第i个元素等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9332877.html

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

发表评论

登录后才能评论

评论列表(0条)

保存