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

