淺談Map集合中g(shù)et不存在的key值,會拋出異常嗎?
我就廢話不多說了,大家還是直接看代碼吧~
public static void main(String[] args) { Map<String, String> a = new HashMap<String, String>(); String string = a.get("a111"); System.out.println(string); }
在Map集合中,get一個不存在的值,不會拋出異常,獲得的返回值為null。
補充知識:map中g(shù)et不存在的key和containsKey方法
在Map集合中,get一個不存在的值,不會拋出異常,獲得的返回值為null。
public static void main(String[] args) { Map<String, String> a = new HashMap<String, String>(); String string = a.get("a111"); System.out.println(string); }
Map集合允許值對象為null,并且沒有個數(shù)限制,所以當(dāng)get()方法的返回值為null時,可能有兩種情況,一種是在集合中沒有該鍵對象,另一種是該鍵對象沒有映射任何值對象,即值對象為null。因此,在Map集合中不應(yīng)該利用get()方法來判斷是否存在某個鍵,而應(yīng)該利用containsKey()方法來判斷,例如下面的例子。
下面的代碼首先創(chuàng)建一個由HashMap類實現(xiàn)的Map集合,并依次向Map集合中添加一個值對象為null和“馬先生”的映射;然后分別通過get()和containsKey()方法執(zhí)行這兩個鍵對象;最后執(zhí)行一個不存在的鍵對象。關(guān)鍵代碼如下:
import java.util.HashMap; import java.util.Map; public class TestMapKey { public static void main(String[] args) { Map<Integer, String> map = new HashMap<Integer, String>(); map.put(220180, null); map.put(220181, "馬先生"); System.out.println("get()方法的返回結(jié)果:"); System.out.print("------ " + map.get(220180)); System.out.print(" " + map.get(220181)); System.out.println(" " + map.get(220182)); System.out.println("containsKey()方法的返回結(jié)果:"); System.out.print("------ " + map.containsKey(220180)); System.out.print(" " + map.containsKey(220181)); System.out.println(" " + map.containsKey(220182)); } }
執(zhí)行上面的代碼,在控制臺將輸出如下信息:
get()方法的返回結(jié)果:
------ null 馬先生 null
containsKey()方法的返回結(jié)果:
------ true true false
結(jié)論:Map集合中不應(yīng)該利用get()方法來判斷是否存在某個鍵,因為可能map的key值存在但value的值為null
今天被這個坑了,記錄一下
以上這篇淺談Map集合中g(shù)et不存在的key值,會拋出異常嗎?就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于ConditionalOnMissingBean失效問題的追蹤
這篇文章主要介紹了關(guān)于ConditionalOnMissingBean失效問題的追蹤方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03MyBatis的CRUD中的不同參數(shù)綁定查詢實現(xiàn)
本文主要介紹了MyBatis的CRUD中的不同參數(shù)綁定查詢實現(xiàn),主要包括單個參數(shù)傳遞綁定,序號參數(shù)傳遞綁定,注解參數(shù)傳遞綁定,pojo(對象)參數(shù)傳遞綁定,map參數(shù)傳遞綁定這幾種類型,具有一定的參考價值,感興趣的可以了解一下2023-12-12java使用Validation進行數(shù)據(jù)校驗的方式總結(jié)
在Java中提供了一系列的校驗方式,下面這篇文章主要給大家介紹了關(guān)于java使用Validation進行數(shù)據(jù)校驗的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06Java?實戰(zhàn)項目之家政服務(wù)平臺系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現(xiàn)家政服務(wù)平臺系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11