Map(嚴(yán)格來說是一個容器不是一個集合)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.Map概述

A:Map接口概述

查看API可以知道:

將鍵映射到值的對象

一個映射不能包含重復(fù)的鍵

每個鍵最多只能映射到一個值

簡而言之,一個key值對應(yīng)著一個value,多個value可以對應(yīng)著一個key


B:Map接口和Collection接口的不同

Map是雙列的,Collection是單列的

Map的鍵唯一,Collection的子體系Set是唯一的

Map集合的數(shù)據(jù)結(jié)構(gòu)指針對鍵有效冀偶,跟值無關(guān);Collection集合的數(shù)據(jù)結(jié)構(gòu)是針對元素有效

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.Map的CRUD

A:Map集合的功能概述

a:添加功能

V put(K key,V value):添加元素址愿。

如果鍵是第一次存儲节预,就直接存儲元素,返回null

如果鍵不是第一次存在鹉动,就用值把以前的值替換掉,返回以前的值

java public static void add() { Map<String,String> map = new HashMap<>(); map.put("1233", "lisi"); map.put("13", "lisi1"); map.put("134", "lisi2"); map.put("134", "lis"); }

b:刪除功能

void clear():移除所有的鍵值對元素

V remove(Object key):根據(jù)鍵刪除鍵值對元素,并把值返回

```java public static void add() { Map<String,String> map = new HashMap<>(); map.put("1233", "lisi"); map.put("13", "lisi1"); map.put("134", "lisi2"); map.put("134", "lis");

? ? map.clear();

? ? String string = map.remove("13");

}

```

c:判斷功能

boolean containsKey(Object key):判斷容器是否包含指定的鍵

boolean containsValue(Object value):判斷容器是否包含指定的值

boolean isEmpty():判斷容器是否為空

```java public static void add() { Map<String,String> map = new HashMap<>(); map.put("1233", "lisi"); map.put("13", "lisi1"); map.put("134", "lisi2"); map.put("134", "lis");

? ? boolean key = map.containsKey("13");

? ? boolean value = map.containsValue("lisi");

? ? System.out.println(key);

? ? System.out.println(value);

}

```

d:獲取功能

Set<Map.Entry<K,V>> entrySet():

```java public static void add() { Map<String,String> map = new HashMap<>(); map.put("1233", "lisi"); map.put("13", "lisi1"); map.put("134", "lisi2"); map.put("134", "lis");

? ? Set<Entry<String,String>> set = map.entrySet();

? ? for (Entry<String, String> entry : set) {

? ? ? ? System.out.println(entry.getKey() + ":" + entry.getValue());

? ? }

} ```

V get(Object key):根據(jù)鍵獲取值

java public static void add() { Map<String,String> map = new HashMap<>(); map.put("1233", "lisi"); map.put("13", "lisi1"); map.put("134", "lisi2"); map.put("134", "lis"); String string = map.get("123"); System.out.println(string); }


Set?keySet():獲取容器中所有鍵的容器

```java public static void add() { Map<String,String> map = new HashMap<>(); map.put("1233", "lisi"); map.put("13", "lisi1"); map.put("134", "lisi2"); map.put("134", "lis");

? ? Set<String> set = map.keySet();

? ? for (String string : set) {

? ? ? ? map.get(string);

? ? }

} ```

Collection?values():獲取容器中所有值的容器

```java public static void add() { Map<String,String> map = new HashMap<>(); map.put("1233", "lisi"); map.put("13", "lisi1"); map.put("134", "lisi2"); map.put("134", "lis");

? ? Collection<String> values = map.values();

}

```

e:長度功能

int size():返回容器中的鍵值對的個數(shù)

3.Map集合的遍歷之鍵找值

A:鍵找值思路:

獲取所有鍵的容器

遍歷鍵的容器懈玻,獲取到每一個鍵

根據(jù)鍵找值

B:案例演示

Map集合的遍歷之鍵找值

```java

public static void add() { Map<String,String> map = new HashMap<>(); map.put("1233", "lisi"); map.put("13", "lisi1"); map.put("134", "lisi2"); map.put("134", "lis");

? ? Set<String> set = map.keySet();

? ? for (String string : set) {

? ? ? ? map.get(string);

? ? }

}

```

?

4.Map集合的遍歷之鍵值對對象找鍵和值

A:鍵值對對象找鍵和值思路:

獲取所有鍵值對對象的容器

遍歷鍵值對對象的容器,獲取到每一個鍵值對對象

根據(jù)鍵值對對象找鍵和值

B:案例演示

Map集合的遍歷之鍵值對對象找鍵和值

? ? public static void add() {

? ? ? ? Map<String,String> map = new HashMap<>();

? ? ? ? map.put("1233", "lisi");

? ? ? ? map.put("13", "lisi1");

? ? ? ? map.put("134", "lisi2");

? ? ? ? map.put("134", "lis");

? ? ? ? Set<Entry<String,String>> set = map.entrySet();

? ? ? ? for (Entry<String, String> entry : set) {

? ? ? ? }

? ? }

5.HashMap集合鍵是String值是Student的案例

A:案例演示

HashMap集合鍵是Student值是String的案例

```java public static void add() { Map<String, Student> map = new HashMap<>(); Student student = new Student(1, "lisi"); map.put(student.getId()+"", student);

} ```

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?6.LinkedHashMap的概述和使用

A:案例演示

LinkedHashMap的特點(diǎn)

底層是鏈表實(shí)現(xiàn)的可以保證怎么存就怎么取

7.TreeMap集合鍵是Student值是String的案例

A:案例演示

TreeMap集合鍵是Student值是String的案例(會對key值排序)

8.統(tǒng)計(jì)字符串中每個字符出現(xiàn)的次數(shù)

A:案例演示

需求:統(tǒng)計(jì)字符串中每個字符出現(xiàn)的次數(shù)

9.容器嵌套之HashMap嵌套HashMap

A:案例演示

容器嵌套之HashMap嵌套HashMap

10.HashMap和Hashtable的區(qū)別

A:面試題

HashMap和Hashtable的區(qū)別

Hashtable是JDK1.0版本出現(xiàn)的,是線程安全的,效率低,HashMap是JDK1.2版本出現(xiàn)的,是線程不安全的,效率高

Hashtable不可以存儲null鍵和null值,HashMap可以存儲null鍵和null值

B:案例演示

HashMap和Hashtable的區(qū)別

? ? ? ? ? ? ? ? ? ? ? ? ? ??? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TreeMap:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乾颁,一起剝皮案震驚了整個濱河市涂乌,隨后出現(xiàn)的幾起案子艺栈,更是在濱河造成了極大的恐慌,老刑警劉巖湾盒,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件湿右,死亡現(xiàn)場離奇詭異,居然都是意外死亡罚勾,警方通過查閱死者的電腦和手機(jī)毅人,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荧库,“玉大人堰塌,你說我怎么就攤上這事》稚溃” “怎么了场刑?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蚪战。 經(jīng)常有香客問我牵现,道長,這世上最難降的妖魔是什么邀桑? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任瞎疼,我火速辦了婚禮,結(jié)果婚禮上壁畸,老公的妹妹穿的比我還像新娘贼急。我一直安慰自己,他們只是感情好捏萍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布太抓。 她就那樣靜靜地躺著,像睡著了一般令杈。 火紅的嫁衣襯著肌膚如雪走敌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天逗噩,我揣著相機(jī)與錄音掉丽,去河邊找鬼。 笑死异雁,一個胖子當(dāng)著我的面吹牛捶障,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播片迅,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼残邀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了柑蛇?” 一聲冷哼從身側(cè)響起芥挣,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎耻台,沒想到半個月后空免,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盆耽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年蹋砚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摄杂。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡坝咐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出析恢,到底是詐尸還是另有隱情墨坚,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布映挂,位于F島的核電站泽篮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏柑船。R本人自食惡果不足惜帽撑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鞍时。 院中可真熱鬧亏拉,春花似錦、人聲如沸逆巍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒸苇。三九已至磷蛹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溪烤,已是汗流浹背味咳。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留檬嘀,地道東北人槽驶。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像鸳兽,于是被迫代替她去往敵國和親掂铐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351

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