淺談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。
補(bǔ)充知識: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類實(shí)現(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()方法來判斷是否存在某個鍵,因?yàn)榭赡躮ap的key值存在但value的值為null
今天被這個坑了,記錄一下
以上這篇淺談Map集合中g(shù)et不存在的key值,會拋出異常嗎?就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java將word文件轉(zhuǎn)成pdf文件的操作方法
這篇文章主要介紹了Java將word文件轉(zhuǎn)成pdf文件的操作方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09
詳解使用MyBatis Generator自動創(chuàng)建代碼
這篇文章主要介紹了使用MyBatis Generator自動創(chuàng)建代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
在Eclipse中運(yùn)行Solr 基礎(chǔ)知識
Solr我還是個菜鳥,寫這一些文章只是記錄一下最近一段時間學(xué)習(xí)Solr的心得,望各位同仁不要見笑,還希望多多指點(diǎn)2012-11-11
Spring?Boot?Admin?添加報警提醒和登錄驗(yàn)證功能的具體實(shí)現(xiàn)
報警提醒功能是基于郵箱實(shí)現(xiàn)的,當(dāng)然也可以使用其他的提醒功能,如釘釘或飛書機(jī)器人提醒也是可以的,但郵箱報警功能的實(shí)現(xiàn)成本最低,所以本文我們就來看郵箱的報警提醒功能的具體實(shí)現(xiàn)2022-01-01
關(guān)于動態(tài)參數(shù)使用@PathVariable的解析
這篇文章主要介紹了關(guān)于動態(tài)參數(shù)使用@PathVariable的解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
java讀取文件內(nèi)容,解析Json格式數(shù)據(jù)方式
這篇文章主要介紹了java讀取文件內(nèi)容,解析Json格式數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09

