最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年03月04日 11:29:41   投稿:zx  
這篇文章主要介紹了Java Map.get()返回指定鍵所映射的值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

語法:

get(Object key))

參數(shù)說明:

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

典型應(yīng)用

本示例使用 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)試的時候仔細(xì)一看,key值的類型是Long型,然后傳0L,即順利取到值了。  

分析:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • springboot整合quartz定時任務(wù)框架的完整步驟

    springboot整合quartz定時任務(wù)框架的完整步驟

    在做項目時有時候會有定時器任務(wù)的功能,比如某某時間應(yīng)該做什么,多少秒應(yīng)該怎么樣之類的,下面這篇文章主要給大家介紹了關(guān)于springboot整合quartz定時任務(wù)框架的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Java Map集合使用方法全面梳理

    Java Map集合使用方法全面梳理

    Map是一種依照鍵(key)存儲元素的容器,鍵(key)很像下標(biāo),在List中下標(biāo)是整數(shù)。在Map中鍵(key)可以使任意類型的對象。Map中不能有重復(fù)的鍵(Key),每個鍵(key)都有一個對應(yīng)的值(value)。一個鍵(key)和它對應(yīng)的值構(gòu)成map集合中的一個元素
    2022-04-04
  • Java?對象在?JVM?中的內(nèi)存布局超詳細(xì)解說

    Java?對象在?JVM?中的內(nèi)存布局超詳細(xì)解說

    這篇文章主要介紹了Java?對象在?JVM?中的內(nèi)存布局超詳細(xì)解說,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Java ThreadLocal有什么作用你知道嗎

    Java ThreadLocal有什么作用你知道嗎

    這篇文章主要為大家詳細(xì)介紹了java ThreadLocal的作用,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-09-09
  • 面試官:怎么做JDK8的垃圾收集器的調(diào)優(yōu)(面試常問)

    面試官:怎么做JDK8的垃圾收集器的調(diào)優(yōu)(面試常問)

    這篇文章主要介紹了面試官:怎么做JDK8的垃圾收集器的調(diào)優(yōu),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • springboot全局異常處理方式@ControllerAdvice和@ExceptionHandler

    springboot全局異常處理方式@ControllerAdvice和@ExceptionHandler

    文章總結(jié)了個人在處理全局異常處理時的經(jīng)驗,包括使用`StatusEnum`來定義狀態(tài)碼,旨在為讀者提供參考,并鼓勵大家支持腳本之家
    2024-11-11
  • 完美解決在Servlet中出現(xiàn)一個輸出中文亂碼的問題

    完美解決在Servlet中出現(xiàn)一個輸出中文亂碼的問題

    下面小編就為大家?guī)硪黄昝澜鉀Q在Servlet中出現(xiàn)一個輸出中文亂碼的問題。小編覺得挺不錯的現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Java的內(nèi)存分配與回收策略詳解

    Java的內(nèi)存分配與回收策略詳解

    這篇文章主要介紹了Java的內(nèi)存分配與回收策略詳解,對象的內(nèi)存分配,就是在堆上分配,對象主要分配在新生代的 Eden 區(qū)上,少數(shù)情況下可能直接分配在老年代,分配規(guī)則不固定,取決于當(dāng)前使用的垃圾收集器組合以及相關(guān)的參數(shù)配置,需要的朋友可以參考下
    2023-08-08
  • SpringMVC請求流程源碼解析

    SpringMVC請求流程源碼解析

    這篇文章主要介紹了SpringMVC請求流程源碼分析,包括springmvc使用,SpringMVC啟動過程及SpringMVC請求過程,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • springboot使用Mybatis(xml和注解)過程全解析

    springboot使用Mybatis(xml和注解)過程全解析

    這篇文章主要介紹了springboot使用Mybatis(xml和注解)過程全解析 ,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05

最新評論

涪陵区| 海丰县| 独山县| 嘉鱼县| 淮安市| 会理县| 安塞县| 娄烦县| 荃湾区| 怀安县| 锦州市| 东宁县| 黎平县| 孝昌县| 湟中县| 库尔勒市| 鄢陵县| 洪雅县| 利川市| 尉犁县| 玛多县| 定安县| 天峻县| 东安县| 鲁山县| 萝北县| 荆州市| 潜山县| 唐海县| 电白县| 耒阳市| 丰原市| 社旗县| 泰兴市| 乌鲁木齐县| 井陉县| 宁津县| 井研县| 东辽县| 夏津县| 驻马店市|