真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在Java中使用Map.get()返回指定鍵所映射的值-創(chuàng)新互聯(lián)

怎么在Java中使用Map.get()返回指定鍵所映射的值?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)建站是一家專業(yè)提供麻城企業(yè)網(wǎng)站建設,專注與網(wǎng)站設計制作、成都網(wǎng)站建設、H5場景定制、小程序制作等業(yè)務。10年已為麻城眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設計公司優(yōu)惠進行中。

Java是什么

Java是一門面向?qū)ο缶幊陶Z言,可以編寫桌面應用程序、Web應用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應用程序。

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

語法:


get(Object key))

參數(shù)說明:


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


典型應用

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


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

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

java中map的get方法key值類型的一個問題

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

分析:

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

代碼大概就是上面這個樣子。

在調(diào)用get方法的時候,會進入

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

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

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

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

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

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

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

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

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

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

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

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

然后猜測了下可能和Integer的緩存有關,這樣試了下:

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

看完上述內(nèi)容,你們掌握怎么在Java中使用Map.get()返回指定鍵所映射的值的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


分享文章:怎么在Java中使用Map.get()返回指定鍵所映射的值-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://weahome.cn/article/doisjg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部