Map集合知识点(炸窝)
/**
* 簡(jiǎn)單的介紹一下我們接下來準(zhǔn)備學(xué)習(xí)的集合MAP集合
*
* Map集合的簡(jiǎn)單概述:
* 其中的健是不能進(jìn)行重復(fù)的,而且每一健只能映射一個(gè)值,簡(jiǎn)單的說就是K與V是一一對(duì)應(yīng)的,不能有其他的關(guān)系,
* 但是我們注意到value值是可以進(jìn)行重復(fù)的
* 所謂的映射就可以理解成一種我們小時(shí)候?qū)W習(xí)的一種對(duì)應(yīng)關(guān)系
* 類比:Collections集合我們就理解成是單身狗,里面的元素只能存儲(chǔ)一個(gè)值,而我們今天所學(xué)的MAP集合是一個(gè)元素當(dāng)中
* 具有兩個(gè)值,這兩個(gè)值分別是健key和值value,因而我們稱MAp為夫妻對(duì)兒集合,就是我們的一夫一妻制度,
*
* dcsc
* 理解:
* 1.Collections是單列集合,MAP是雙列集合
* 2.凡是在dsdw
* java.util包當(dāng)中的我們都可以認(rèn)為是一個(gè)工具
* 3.同時(shí)我們要注意MAP同樣也是一個(gè)接口,但是其接口是具有兩個(gè)范型的,要區(qū)別于我們的Collection集合
* 4.Map<K,V>是含有兩個(gè)范型的
* K:此映射所維護(hù)的健的類型
* V:映射值的類型
*
*
* 總結(jié):
* java.util.Map<k,v>集合
* 集和的特點(diǎn):
* 1是一個(gè)雙列集合,一個(gè)元素包含兩個(gè)值(一個(gè)key,一個(gè)value)
* 2集合當(dāng)中的兩個(gè)值數(shù)據(jù)類型是可以相同的,可以不通,隨意的進(jìn)行設(shè)置
* 3其中的k是不能重復(fù)的,v是可以重復(fù)的
* 4一個(gè)k對(duì)應(yīng)一個(gè)v的值,是一種一一對(duì)應(yīng)的關(guān)系
*
*
* ****************************************
* 二:map集合接口下面一些常用的實(shí)現(xiàn)類介紹
* 1.HashMap<K,V>:
* ①:同樣的HashMap實(shí)現(xiàn)類的底層也是一個(gè)哈希表結(jié)構(gòu),此實(shí)現(xiàn)提供所有可選的映射操作,并允許使用null值和null鍵,
* 此類不保證映射的順序,特別是他不保證該順序恒久不變,而且是不同步的,也就是多線程的,多線程就意味著它的速度是非常快的,
* 如何理解不同步?
* 我們?cè)谧鲆患虑榈臅r(shí)候,將這件事情分成多個(gè)步驟,我們每個(gè)人進(jìn)行其中的一些操作,不是由一個(gè)人來完成的,這就是不同步
* 小知識(shí):MAP接口的花溪表和鏈表列表實(shí)現(xiàn),既有可預(yù)知的迭代升級(jí),此實(shí)現(xiàn)與hashmAP的不同之處在于,后者維護(hù)著一個(gè)運(yùn)行與所有條目的雙重鏈接列表
* 此鏈接列表定義了迭代順序跟迭代順序,通常就是將鍵插入到映射中的順序,
*
* 總結(jié):
* java.util.HashMap
* 1.底層是哈希表結(jié)構(gòu),說到哈希表我們的第一反應(yīng)就是快啊,你好你好你好,JDK1.8之前是數(shù)組+單向鏈表
* 之后就是數(shù)組+單向列表/紅黑書-----紅黑樹的目的就是為了提高查詢的速度,
* 2.HashMap集合是一個(gè)無序的集合,存儲(chǔ)元素順序和取出元素的順序有可能不一致,
*
* java.util.LinkedHashMap
* 1.底層是一個(gè)哈希表+鏈表(保證了迭代順序)
* 2.是一個(gè)有序的集合,存儲(chǔ)元素和取出元素的順序是一樣的,具有存取一致的特點(diǎn)
*
* ******************************************
* 【Map集合當(dāng)中的常用方法】:
* put就是將健值對(duì)進(jìn)行添加,相當(dāng)于其中的add方法
* 但是它的返回值是V,當(dāng)哈希表當(dāng)中的K健沒有存放數(shù)據(jù)的時(shí)候,他的返回值為0,當(dāng)K健的地方不為空值的時(shí)候,將對(duì)應(yīng)的V
* 值進(jìn)行返回,拿自己的進(jìn)行代替
* 類比:我們?nèi)ヒ粋€(gè)樹墩栽樹,當(dāng)樹墩的地方?jīng)]有樹的時(shí)候我們就將自己的樹放到那個(gè)地方,然后進(jìn)行培土澆水就ok了,但是如果想要栽樹的樹墩處有一顆棗樹,而我們
* 想要在這個(gè)地方栽柳樹,那么我們就必須將原來的棗樹進(jìn)行移除,將自己的柳樹栽在原來的地方,也就是返回原來的棗樹
*
* get(object key):返回指定鍵所映射的值,也就是valual,如果此映射不包含該健的映射關(guān)系,則返回null
*
* remove(object key):如果存在一個(gè)鍵的映射關(guān)系,則將其從此映射中移除
*
* containsKey(Object key):如果此映射包含指定健的映射關(guān)系,則返回ture,也就是判斷是否包含key健
*
* 小知識(shí):
* 我們之后稱<k,v>為健值對(duì),因?yàn)閙ap來說我們?nèi)绻鎯?chǔ)數(shù)據(jù)就是存儲(chǔ)一對(duì)一對(duì)的存儲(chǔ),就好比結(jié)婚登記一個(gè)樣子都是一對(duì)一對(duì)
* 進(jìn)行登記的,不能是單身進(jìn)行登記的,哈哈,我們不妨叫她夫妻對(duì),夫妻對(duì)也是有一個(gè)主導(dǎo)地位的,在這里就是key
*/
}
總結(jié)
以上是生活随笔為你收集整理的Map集合知识点(炸窝)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 先序中序数组推后序数组
- 下一篇: 终于,我读懂了所有Java集合——sor