怎么在Java中使用Map.get()返回指定键所映射的值

  介绍

怎么在Java中使用Map.get()返回指定键所映射的值?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

Java是什么

Java是一门面向对象编程语言,可以编写桌面应用程序,网络应用程序,分布式系统和嵌入式系统应用程序。

Java集合类中的Map.get()方法返回指定键所映射的值。如果此映射不包含该键的映射关系,则返回零。

语法:

<代码>(对象键))

参数说明:

关键:是指定的映射集合中的键名。

典型应用

本示例使用HashMap类创建映射集合对象,并向集合中添加指定的内容,然后使用得到方法获取指定键名的键值对象。代码如下:

public  static  void  main (String [], args) {   Map 才能;Map =, new  HashMap();,//定义映射集合对象   map.put才能(“apple",“新鲜的苹果“),,//向集合中添加对象   map.put才能(“computer",“配置优良的计算机“);   map.put才能(“book",“堆积成山的图书“);   Object 才能;get =, map.get (“apple");,//获取指定键所映射的值   如果才能(get  instanceof 字符串){,//判断键值是否为字符串类型   String 才能;value =,(字符串),,//获取指定值的值   System.out.println才能(“在地图集合中键名苹果的键值是:“+值),,//将价值值输出   ,}   }

运行结果如下:
在映射集合中键名苹果的键值是:新鲜的苹果

java中地图的得到方法关键值类型的一个问题

描述:在HashMap中取值的时候,键值是0,用hashMap.get(0),却无论如何也取不到价值,调试的时候仔细一看,键值的类型是长型,然后传0 l,即顺利取到值了只,

分析:

Map<长,String>, map =, new  HashMap<在();   map.put (0 l,“string");   map.get (0);

代码大概就是上面这个样子。

在调用得到方法的时候,会进入

,, public  V 得到(Object 键),{   ,,,if  (key ==, null)   ,,,,,return  getForNullKey ();   ,,,Entry, entry =, getEntry(关键);   ,   ,,,return  null ==, entry  ?, null :, entry.getValue ();   以前,,}

如果关键值是0 l(长),那么进入得到方法的时候,入参关键值依然是0(长),那么很顺利的会在getEntry方法体内,通过相关的哈希和比较操作(具体也比较简单,不是重点不多说)返回预期的价值值。

但是,如果关键值是图中的0(整数),那么得到方法被调用时的入参就很奇怪了,如下:

怎么在Java中使用Map.get()返回指定键所映射的值

正如图中调试信息一样,关键值为Java/lang/IntegerCache美元整数,整数内部的一个私有类,缓存-127 ~ 128的数据(这个也不是重点),重点是这个方法不知道被谁调用了两次,而且关键值都是这个值,直到第三次的时候,键值为0(整数),当然了,即使这样也自然找不到预期的价值值了,因为在getEntry方法内,进行=时,毕竟是整数类型,是和关键值比较不上的。

现在想不明白的是,这个得到方法前两次被谁调用的,希望哪位大佬知道,留个言解释下。

我用javap命令查看了下,并没有弄明白(主要是小弟道行太浅):

怎么在Java中使用Map.get()返回指定键所映射的值

另外,我觉得可能的关键值是0的原因,然后用3000作为键值(put)试了下,结果还是这样。

然后,我将代码改成这样:

Map<整数,String>, map =, new  HashMap<在();   map.put (0,,“string");   map.get (0);

就不会出现上面截图的情况,第一次进入得到方法(也只进入一次),键值就是0(整数)。

然后猜测了下可能和整数的缓存有关,这样试了下:

怎么在Java中使用map.get()返回指定键所映射的值

看完上述内容,你们掌握怎么在Java中使用map.get()返回指定键所映射的值的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

怎么在Java中使用Map.get()返回指定键所映射的值