国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java Map.get()返回指定鍵所映射的值

瀏覽:13日期:2022-08-15 16:00:15

Java 集合類(lèi)中的 Map.get() 方法返回指定鍵所映射的值。如果此映射不包含該鍵的映射關(guān)系,則返回 null。

語(yǔ)法:

get(Object key))

參數(shù)說(shuō)明:

key:是指定的 Map 集合中的鍵名。

典型應(yīng)用

本示例使用 HashMap 類(lèi)創(chuàng)建 Map 集合對(duì)象,并向集合中添加指定的內(nèi)容,然后使用 get 方法獲取指定鍵名的鍵值對(duì)象。代碼如下:

public static void main(String[] args){ Map map = new HashMap(); //定義Map集合對(duì)象 map.put('apple','新鮮的蘋(píng)果'); //向集合中添加對(duì)象 map.put('computer','配置優(yōu)良的計(jì)算機(jī)'); map.put('book','堆積成山的圖書(shū)'); Object get = map.get('apple'); //獲取指定鍵所映射的值 if(get instanceof String){ //判斷鍵值是否為String類(lèi)型 String value = (String)get; //獲取指定的value值 System.out.println('在Map集合中鍵名apple的鍵值是:'+value); //將value值輸出 }}

運(yùn)行結(jié)果如下:在Map集合中鍵名apple的鍵值是: 新鮮的蘋(píng)果

java中map的get方法key值類(lèi)型的一個(gè)問(wèn)題

描述: 在HashMap中取值的時(shí)候,key值是0,用hashMap.get(0),卻無(wú)論如何也取不到value,調(diào)試的時(shí)候仔細(xì)一看,key值的類(lèi)型是Long型,然后傳0L,即順利取到值了。

分析:

Map<Long,String> map = new HashMap<>();map.put(0L, 'string');map.get(0);

代碼大概就是上面這個(gè)樣子。

在調(diào)用get方法的時(shí)候,會(huì)進(jìn)入

public V get(Object key) { if (key == null) return getForNullKey(); Entry<K,V> entry = getEntry(key); return null == entry ? null : entry.getValue(); }

如果key值是0L(Long),那么進(jìn)入get方法的時(shí)候,入?yún)ey值依然是0(Long),那么很順利的會(huì)在getEntry方法體內(nèi),通過(guò)相關(guān)的hash和比較操作(具體也比較簡(jiǎn)單,不是重點(diǎn)不多說(shuō))返回預(yù)期的value值。

但是,如果key值是圖中的0(Integer),那么get方法被調(diào)用時(shí)的入?yún)⒕秃芷婀至耍缦拢?/p>

Java Map.get()返回指定鍵所映射的值

正如圖中調(diào)試信息一樣,key值為java/lang/Integer$IntegerCache,Integer內(nèi)部的一個(gè)私有類(lèi),緩存-127~128的數(shù)據(jù)(這個(gè)也不是重點(diǎn)),重點(diǎn)是這個(gè)方法不知道被誰(shuí)調(diào)用了兩次,而且Key值都是這個(gè)值,直到第三次的時(shí)候,key值為0(Integer),當(dāng)然了,即使這樣也自然找不到預(yù)期的value值了,因?yàn)樵趃etEntry方法內(nèi),進(jìn)行equals時(shí),畢竟是Integer類(lèi)型,是和key值比較不上的。

現(xiàn)在想不明白的是,這個(gè)get方法前兩次被誰(shuí)調(diào)用的,希望哪位大佬知道,留個(gè)言解釋下。

我用javap命令查看了下,并沒(méi)有弄明白(主要是小弟道行太淺):

Java Map.get()返回指定鍵所映射的值

另外,我覺(jué)得可能key值是0的原因,然后用3000作為key值(put,get)試了下,結(jié)果還是這樣。

然后,我將代碼改成這樣:

Map<Integer,String> map = new HashMap<>();map.put(0, 'string');map.get(0);

就不會(huì)出現(xiàn)上面截圖的情況,第一次進(jìn)入get方法(也只進(jìn)入一次),key值就是0(Integer)。

然后猜測(cè)了下可能和Integer的緩存有關(guān),這樣試了下:

Java Map.get()返回指定鍵所映射的值

斷點(diǎn)打在第二次get方法時(shí),這時(shí)候,進(jìn)入get方法體內(nèi)時(shí),key值就是預(yù)期的0(Integer),當(dāng)然,這是為什么,我還是不明白。

希望知道原因的前輩可以解答下,若日后搞明白了,我再來(lái)解釋。

到此這篇關(guān)于Java Map.get()返回指定鍵所映射的值的文章就介紹到這了,更多相關(guān)Java Map.get返回值內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 狠狠五月深爱婷婷网 | 激情6月丁香婷婷色综合 | 亚洲精品久久精品h成人 | 在线播放成人高清免费视频 | 亚洲欧美另类视频 | 国产成人自拍在线 | free性丰满白嫩白嫩的hd | 免费国产成人手机在线观看 | 久久亚洲精品中文字幕二区 | 久久色视频在线观看 | 久久精品高清 | 精品一区二区三区免费爱 | 亚洲专区在线视频 | 日韩美香港a一级毛片 | 亚洲伊人色一综合网 | 国产一级做性视频 | 黄色作爱视频 | 欧美成人影院 | 国产一级免费视频 | 精品韩国主播福利视频在线观看一 | 中文字幕二区三区 | 久99re视频9在线观看 | 中文字幕有码在线 | 亚洲精品午夜久久久伊人 | 欧美在线a级高清 | 在线看国产 | 狼人久久尹人香蕉尹人 | 免费国产不卡午夜福在线 | 欧美成人免费观看久久 | 国产精品拍拍拍福利在线观看 | 国产网站免费在线观看 | 中文字幕日韩三级 | 亚洲一区二区在线免费观看 | 亚洲精品国产第一区二区三区 | 2020夜夜操 | 国产欧美久久久精品 | 免费观看成人久久网免费观看 | 亚洲一区视频在线 | 一级毛片aaa片免费观看 | 高清一级淫片a级中文字幕 高清一区二区 | 古代级a毛片在线 |