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

