淺談Map集合中g(shù)et不存在的key值,會(huì)拋出異常嗎?
我就廢話(huà)不多說(shuō)了,大家還是直接看代碼吧~
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一個(gè)不存在的值,不會(huì)拋出異常,獲得的返回值為null。
補(bǔ)充知識(shí):map中g(shù)et不存在的key和containsKey方法
在Map集合中,get一個(gè)不存在的值,不會(huì)拋出異常,獲得的返回值為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集合允許值對(duì)象為null,并且沒(méi)有個(gè)數(shù)限制,所以當(dāng)get()方法的返回值為null時(shí),可能有兩種情況,一種是在集合中沒(méi)有該鍵對(duì)象,另一種是該鍵對(duì)象沒(méi)有映射任何值對(duì)象,即值對(duì)象為null。因此,在Map集合中不應(yīng)該利用get()方法來(lái)判斷是否存在某個(gè)鍵,而應(yīng)該利用containsKey()方法來(lái)判斷,例如下面的例子。
下面的代碼首先創(chuàng)建一個(gè)由HashMap類(lèi)實(shí)現(xiàn)的Map集合,并依次向Map集合中添加一個(gè)值對(duì)象為null和“馬先生”的映射;然后分別通過(guò)get()和containsKey()方法執(zhí)行這兩個(gè)鍵對(duì)象;最后執(zhí)行一個(gè)不存在的鍵對(duì)象。關(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í)行上面的代碼,在控制臺(tái)將輸出如下信息:
get()方法的返回結(jié)果:
------ null 馬先生 null
containsKey()方法的返回結(jié)果:
------ true true false
結(jié)論:Map集合中不應(yīng)該利用get()方法來(lái)判斷是否存在某個(gè)鍵,因?yàn)榭赡躮ap的key值存在但value的值為null
今天被這個(gè)坑了,記錄一下
以上這篇淺談Map集合中g(shù)et不存在的key值,會(huì)拋出異常嗎?就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于ConditionalOnMissingBean失效問(wèn)題的追蹤
這篇文章主要介紹了關(guān)于ConditionalOnMissingBean失效問(wèn)題的追蹤方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03Java輕松入門(mén)冒泡?選擇?插入?希爾?歸并排序算法
這篇文章主要介紹了Java常用的排序算法及代碼實(shí)現(xiàn),在Java開(kāi)發(fā)中,對(duì)排序的應(yīng)用需要熟練的掌握,這樣才能夠確保Java學(xué)習(xí)時(shí)候能夠有扎實(shí)的基礎(chǔ)能力。那Java有哪些排序算法呢?本文小編就來(lái)詳細(xì)說(shuō)說(shuō)Java常見(jiàn)的排序算法,需要的朋友可以參考一下2022-02-02jetty運(yùn)行時(shí)無(wú)法保存文件的解決方法
這篇文章主要為大家詳細(xì)介紹了jetty運(yùn)行時(shí)無(wú)法保存文件的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11MyBatis的CRUD中的不同參數(shù)綁定查詢(xún)實(shí)現(xiàn)
本文主要介紹了MyBatis的CRUD中的不同參數(shù)綁定查詢(xún)實(shí)現(xiàn),主要包括單個(gè)參數(shù)傳遞綁定,序號(hào)參數(shù)傳遞綁定,注解參數(shù)傳遞綁定,pojo(對(duì)象)參數(shù)傳遞綁定,map參數(shù)傳遞綁定這幾種類(lèi)型,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12java使用Validation進(jìn)行數(shù)據(jù)校驗(yàn)的方式總結(jié)
在Java中提供了一系列的校驗(yàn)方式,下面這篇文章主要給大家介紹了關(guān)于java使用Validation進(jìn)行數(shù)據(jù)校驗(yàn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06詳解SpringBoot上傳圖片到阿里云的OSS對(duì)象存儲(chǔ)中
這篇文章主要介紹了SpringBoot上傳圖片到阿里云的OSS對(duì)象存儲(chǔ)中,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10基于springboot activiti 配置項(xiàng)解析
這篇文章主要介紹了springboot activiti 配置項(xiàng)解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Java?實(shí)戰(zhàn)項(xiàng)目之家政服務(wù)平臺(tái)系統(tǒng)的實(shí)現(xiàn)流程
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)家政服務(wù)平臺(tái)系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-11-11Java tomcat中的類(lèi)加載器和安全機(jī)制你了解嗎
這篇文章主要介紹了Tomcat 類(lèi)加載器的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下,希望能夠給你帶來(lái)幫助2021-09-09