欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

map算子相關(guān)總結(jié)

map算子相關(guān)總結(jié)?

1.map的特點(diǎn):key只有一個(gè),而一個(gè)key可以有多個(gè)value,并且key值不可以出現(xiàn)重復(fù)項(xiàng)。就好比,一個(gè)孩子只有一個(gè)親生父親,而一個(gè)父親可以派生出多個(gè)親生孩子。他繼承了AbstractMap類。

2.hashMap可以序列化(即實(shí)現(xiàn)了Serializable接口,推薦打開源碼看一下,141行),所以線程不安全。如果再線程中一般情況下使用ConcurrentHashMap來操作。在每一個(gè)分段上都用鎖進(jìn)行保護(hù),從而讓鎖的粒度更精細(xì)一些,并發(fā)性能更好,而 HashMap 沒有鎖機(jī)制,不是線程安全的。

3.hashMap的底層在jdk1.8之前主要是數(shù)組和鏈表組成,jdk1.8之后新增了紅黑樹的特性。數(shù)組是hashMap的主體,而鏈表是為了解決哈希沖突(下方有對(duì)hash沖突的解釋)。.HashMap中主要是通過key的hashCode來計(jì)算hash值(查看每一個(gè)map的哈希值下方標(biāo)注),然后通過hash值選擇不同的數(shù)組來存儲(chǔ)。

只要hashCode相同,計(jì)算出來的hash值就一樣,如果存儲(chǔ)對(duì)象多了,就有可能不同的對(duì)象計(jì)算出來的hash值是相同的,這就出現(xiàn)了所謂的hash沖突,HashMap的底層是通過鏈表來解決hash沖突的。

具體就是把相同hash值的HashMap,通過鏈表的形式進(jìn)行存儲(chǔ),相當(dāng)于存儲(chǔ)的數(shù)組就是哈希表,數(shù)組的每個(gè)元素都是一個(gè)單鏈表的頭結(jié)點(diǎn),鏈表是用來解決hash沖突的,如果不同的key映射到了數(shù)組的同一位置,那么就將其放入單鏈表中。

4.插入元素的方式有jdk1.8之前的頭插法,轉(zhuǎn)換成了尾插法

5.HashMap的默認(rèn)大小為16,并且一 定是2的指數(shù),每次擴(kuò)容都為old*2。

php索引數(shù)組key,map算子相關(guān)總結(jié)