Java 集合

HashMap
知識(shí)點(diǎn)1 :怎么求的Hash遂赠,通過對(duì)象的Hashcode值 高16位保持不變 低16位與高16位異或求值 得到Hash值
知識(shí)點(diǎn)2 : Hash碰撞 擁有相同的Hash值產(chǎn)生碰撞 新版HashMap會(huì)把數(shù)據(jù)放在此下標(biāo)的鏈表里 放在表尾 鏈表過長(zhǎng)會(huì)采用紅黑樹
知識(shí)點(diǎn)3 : Index的計(jì)算 Hash & (n-1)n為當(dāng)前bucket的size bucket是一個(gè)數(shù)組
知識(shí)點(diǎn)4 : bucket擴(kuò)容時(shí) 重新計(jì)算 Index = Hash &(n-1)n為新的數(shù)組size 值還是會(huì)均勻的分布在bucket數(shù)組當(dāng)中
知識(shí)點(diǎn)5 : key value可以為null
知識(shí)點(diǎn)6: :reHash時(shí) 判斷新增的位是否為0 0就不變 , 1 移動(dòng)兩位
知識(shí)點(diǎn)7 :HashMap 當(dāng)自定義對(duì)象時(shí)需要重寫equals方法為什么需要重寫hashcode
苛谷?因?yàn)椴煌膆ashcode可能會(huì)返回一樣的index下標(biāo) 梯捕,然后判斷equals(默認(rèn)地址比較)的時(shí)候掰派,可能會(huì)相同造成覆蓋問題颖榜,這種情況符合項(xiàng)目的話,其實(shí)是可以不重寫的拍摇,但是大多數(shù)情況下需要重寫亮钦。
衍生知識(shí)點(diǎn) : 如何保證線程安全,Collections.synchronizedMap()方法來得到一個(gè)同步的HashMap充活,HashTable蜂莉,ConcurrentHashMap,性能:ConcurrentHashMap > SynchronizedMap > Hashtable混卵。
jdk1.8 采用CAS + synchronized 正常情況下hash不沖突時(shí) put 采用CAS插入映穗,沖突時(shí)會(huì)同步鎖住。擴(kuò)容操作時(shí)的線程安全幕随,擴(kuò)容時(shí)也允許查找數(shù)據(jù)蚁滋。
get 基本和HashMap類似。

ArrayList
知識(shí)點(diǎn)1: 結(jié)構(gòu)比較簡(jiǎn)單赘淮,大于現(xiàn)有數(shù)組長(zhǎng)度 擴(kuò)容 實(shí)現(xiàn)可變size的動(dòng)態(tài)數(shù)組
知識(shí)點(diǎn)2: 核心是擴(kuò)容機(jī)制辕录,默認(rèn)最大容量10,當(dāng)達(dá)到這個(gè)數(shù)時(shí)會(huì)擴(kuò)大到1.5倍梢卸。

LinkedList
知識(shí)點(diǎn)1 : 雙向鏈表實(shí)現(xiàn)走诞。查找慢
TreeMap
知識(shí)點(diǎn)1: 紅黑樹 樹的中序遍歷保證有序
LinkedHashMap
知識(shí)點(diǎn)1: 繼承了HashMap 依靠雙向鏈表實(shí)現(xiàn)順序訪問
知識(shí)點(diǎn)2: 有兩種模式:順序模式和訪問模式,順序模式按照插入順序輸出蛤高,訪問模式按照訪問的時(shí)間蚣旱,訪問中間的元素會(huì)放到雙向鏈表的最后碑幅。
訪問模式代碼

 void afterNodeAccess(Node<K,V> e) { // move node to last
        LinkedHashMapEntry<K,V> last;
        if (accessOrder && (last = tail) != e) {
            LinkedHashMapEntry<K,V> p =
                (LinkedHashMapEntry<K,V>)e, b = p.before, a = p.after;
            p.after = null;
            if (b == null)
                head = a;
            else
                b.after = a;
            if (a != null)
                a.before = b;
            else
                last = b;
            if (last == null)
                head = p;
            else {
                p.before = last;
                last.after = p;
            }
            tail = p;
            ++modCount;
        }
    }

知識(shí)點(diǎn)3: put的時(shí)候會(huì)調(diào)用linkNodeLast加到最后

private void linkNodeLast(LinkedHashMapEntry<K,V> p) {
        LinkedHashMapEntry<K,V> last = tail;
        tail = p;
        if (last == null)
            head = p;
        else {
            p.before = last;
            last.after = p;
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市塞绿,隨后出現(xiàn)的幾起案子沟涨,更是在濱河造成了極大的恐慌,老刑警劉巖异吻,帶你破解...
    沈念sama閱讀 221,331評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件裹赴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡涧黄,警方通過查閱死者的電腦和手機(jī)篮昧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門赋荆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笋妥,“玉大人,你說我怎么就攤上這事窄潭〈盒” “怎么了?”我有些...
    開封第一講書人閱讀 167,755評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵嫉你,是天一觀的道長(zhǎng)月帝。 經(jīng)常有香客問我,道長(zhǎng)幽污,這世上最難降的妖魔是什么嚷辅? 我笑而不...
    開封第一講書人閱讀 59,528評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮距误,結(jié)果婚禮上簸搞,老公的妹妹穿的比我還像新娘。我一直安慰自己准潭,他們只是感情好趁俊,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刑然,像睡著了一般寺擂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泼掠,一...
    開封第一講書人閱讀 52,166評(píng)論 1 308
  • 那天怔软,我揣著相機(jī)與錄音,去河邊找鬼择镇。 笑死爽雄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沐鼠。 我是一名探鬼主播挚瘟,決...
    沈念sama閱讀 40,768評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼叹谁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了乘盖?” 一聲冷哼從身側(cè)響起焰檩,我...
    開封第一講書人閱讀 39,664評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎订框,沒想到半個(gè)月后析苫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡穿扳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評(píng)論 3 340
  • 正文 我和宋清朗相戀三年衩侥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矛物。...
    茶點(diǎn)故事閱讀 40,435評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茫死,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出履羞,到底是詐尸還是另有隱情峦萎,我是刑警寧澤,帶...
    沈念sama閱讀 36,126評(píng)論 5 349
  • 正文 年R本政府宣布忆首,位于F島的核電站爱榔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏糙及。R本人自食惡果不足惜详幽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望浸锨。 院中可真熱鬧唇聘,春花似錦、人聲如沸揣钦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冯凹。三九已至谎亩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宇姚,已是汗流浹背匈庭。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浑劳,地道東北人阱持。 一個(gè)月前我還...
    沈念sama閱讀 48,818評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像魔熏,于是被迫代替她去往敵國和親衷咽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸽扁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評(píng)論 2 359

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