Java基礎(chǔ)—map集合

Map接口的實現(xiàn)類為HashMap炒俱,Map接口定義的集合又稱為查找表奶稠,用于存儲“鍵值對”。Key可以看成Value的索引盒犹,而往往Key是Value的一部分內(nèi)容懂更。

????1)Key、鍵不可以重復急膀,但是保存的value沮协、值可以重復。Map接口有很多實現(xiàn)類卓嫂,有內(nèi)部為hash表實現(xiàn)的HashMap和內(nèi)部為二叉樹鏈表的TreeMap皂股。同樣這樣的數(shù)據(jù)接口在存儲數(shù)據(jù)時,不建議存儲兩種以上的數(shù)據(jù)類型命黔。所以通常我們使用Map集合時呜呐,也會使用泛型來約束存儲數(shù)據(jù)的數(shù)據(jù)類型。

????2)創(chuàng)建Map進行存儲時悍募,這里要約束兩個類型蘑辑,一個是Key鍵類型,一個是Value值的類型坠宴。

????3)HashMap集合中常用的方法:

????????①V put(Key,Value):????將元素以Key-Value形式存入到集合中洋魂,當存儲內(nèi)容相同時,則Key相同,替換Key對應(yīng)的Value值副砍。

????????②V get(Object Key):返回Key鍵對應(yīng)的Value值衔肢,如果不存在,則返回null豁翎;

????????③boolean containsKey(Object Key):判斷集合中是否保存指定的Key角骤。

????????④boolean containsValue(Object value):判斷集合中是否存在指定的value。

????????⑤若指定的Key在HashMap集合中不存在心剥,則返回null邦尊,原則上,我們在集合中獲取元素時优烧,首先要判斷集合中是否存在該元素蝉揍。之后再使用,避免空指針異常出現(xiàn)畦娄。Map在獲取元素時有針對性又沾,集合在獲取元素需要遍歷集合內(nèi)容,而Map不需要熙卡,只需要給他指定的Key就能獲取對應(yīng)的內(nèi)容杖刷。

Map<String,Point>?map?=?new?HashMap<String,Point>()?;
????map.add("san",new?Point(1,2))?;
????map.add("1,2",new?Point(3,4))?;
????Point?p?=?map.get("san")?;:
????System.out.println("鍵="+p.getX()+"值="+p.getY())?;
????//添加同Key不同Value的對象,將Value替換
????map.add("san",new?Point(5,6))?;
????p?=?map.get("san")?;
????System.out.println("鍵="+p.getX()+"值="+p.getY())?;
????//查找集合中不存在Key
????p?=?map.get("si")?;
????System.out.println("Key="+p.getX()+"Value"=p.getY())?;

? 4)遍歷HashMap方式一:獲取所有的key(迭代Key),并根據(jù)key獲取value再膳。從而達到遍歷的效果挺勿。keySet()方法:是HashMap獲取所有Key的方法曲横。該方法可以獲取Map集合中的所有key喂柒,并以Set集合的形式返回。

Map<String,Point>?map?=?new?HashMap<String,Point>()?;
map.add("yi",new?Point("1,2"))?;
map.add("er",new?Point("3,4"))?;
map.add("san",new?Point("5,6"))?;
//因為key在HashMap泛型中規(guī)定了類型為String,所以返回的Set類型也為String,為了更好的使用禾嫉,定義set類型變量也加上泛型
Set<String>?keySet?=?map.keySet()?;
for(String?str:map.keySet()){
????Point?p?=?map.get(key)?;????//通過Key找到value
????System.out.println("key:"+p.getX()+"value:"+p.getY())?;
}

????5)List灾杰,Set,Map三個接口存儲元素時各自的特點:

????????①List熙参。繼承Collection接口艳吠,使用此接口能精確的定位到要插入的位置。用戶能夠通過索引來訪問List集合中的元素孽椰。

????有序昭娩,可以重復。

????????②Set黍匾。繼承Collection接口栏渺,無序,不重復锐涯,元素唯一值磕诊。集合中任意兩個元素都會a.equals(b) = false,Set集合中最少有一個null元素。

????????③Map霎终。沒有繼承Collection接口滞磺,Map提供Key——value映射。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末莱褒,一起剝皮案震驚了整個濱河市击困,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌保礼,老刑警劉巖沛励,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異炮障,居然都是意外死亡目派,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門胁赢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來企蹭,“玉大人,你說我怎么就攤上這事智末×律悖” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵系馆,是天一觀的道長送漠。 經(jīng)常有香客問我,道長由蘑,這世上最難降的妖魔是什么闽寡? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮尼酿,結(jié)果婚禮上爷狈,老公的妹妹穿的比我還像新娘。我一直安慰自己裳擎,他們只是感情好涎永,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鹿响,像睡著了一般羡微。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惶我,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天妈倔,我揣著相機與錄音,去河邊找鬼指孤。 笑死启涯,一個胖子當著我的面吹牛贬堵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播结洼,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼黎做,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了松忍?” 一聲冷哼從身側(cè)響起蒸殿,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鸣峭,沒想到半個月后宏所,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡摊溶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年爬骤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莫换。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡霞玄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拉岁,到底是詐尸還是另有隱情坷剧,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布喊暖,位于F島的核電站惫企,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏陵叽。R本人自食惡果不足惜狞尔,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咨跌。 院中可真熱鬧沪么,春花似錦硼婿、人聲如沸锌半。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刊殉。三九已至,卻和暖如春州胳,著一層夾襖步出監(jiān)牢的瞬間记焊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工栓撞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留遍膜,地道東北人碗硬。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像瓢颅,于是被迫代替她去往敵國和親恩尾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容