Collection集合類相關(guān)知識

1.HashMap和HashTable的區(qū)別

  • HashMap不是線程安全的能真,適合在單線程的環(huán)境下使用,想要在多線程的環(huán)境下使用需要手動同步辫愉,Collections.synchronizedMap顽决;HashTable是線程安全的,支持多線程環(huán)境下使用
  • HashMap的key和value值都可以為null汉规,HashTable的key和value值都不允許為null
  • HashMap 中數(shù)組的默認(rèn)大小是 16礼殊,而且一定是 2 的倍數(shù)驹吮,擴容后的數(shù)組長度是之 前數(shù)組長度的 2 倍。HashTable 中數(shù)組默認(rèn)大小是 11晶伦,擴容后的數(shù)組長度是之前數(shù)組長度 的 2 倍+1
  • 判斷是否含有某個鍵
    在 HashMap 中碟狞,null 可以作為鍵,這樣的鍵只有一個婚陪;可以有一個或多個鍵所對
    應(yīng)的值為 null族沃。當(dāng) get()方法返回 null 值時,既可以表示 HashMap 中沒有該鍵泌参,也可
    以表示該鍵所對應(yīng)的值為 null脆淹。因此,在 HashMap 中不能用 get()方法來判斷 HashM
    ap 中是否存在某個鍵沽一,而應(yīng)該用 containsKey()方法來判斷盖溺。Hashtable 的鍵值都不能
    為 null,所以可以用 get()方法來判斷是否含有某個鍵

2.WeakHashMap VS HashMap
WeakHashMap 中的 key 采用的是“弱引用”的方式铣缠,只要 WeakHashMap 中的 key 不再被外部引用烘嘱,所對應(yīng)的鍵值對就可以被垃圾回收器回收。
HashMap 中的 key 采用的是“強引用”的方式蝗蛙,當(dāng) key 不再被外部引用 時蝇庭,只有當(dāng)這個 key 從 HashMap 中刪除后,才可以被垃圾回收器回收歼郭。

3.HashMap和TreeMap的區(qū)別

  • HashMap基于數(shù)組+鏈表+紅黑樹實現(xiàn)遗契,而TreeMap基于紅黑樹實現(xiàn)
  • TreeMap中的元素是根據(jù)鍵值排序的
  • HashMap適用于插入、查找病曾、刪除元素牍蜂,而TreeMap適合按自然順序遍歷鍵。
    HashMap通常比TreeMap快一點

4.HashSet原理小結(jié)

  • hashSet內(nèi)部用HashMap來存儲元素
  • HashSet利用本身的值來計算hash值泰涂,因為值被當(dāng)作hashmap的key鲫竞,而hashmap是利用key來計算hash值的
  • 因為hashset將value當(dāng)作key來存儲,所以根據(jù)map的key值唯一的原理逼蒙,我們就可以實現(xiàn)set的無重復(fù)元素的功能从绘,用PRESENT這個Object類型的靜態(tài)的類對象,當(dāng)作value

5.fail-fast機制
假設(shè)存在兩個線程(線程 1是牢、線程 2)僵井,線程 1 通過 Iterator 在遍歷 集合 A 中的元素,在某個時候線程 2 修改了集合 A 的結(jié)構(gòu)(是結(jié)構(gòu)上面的修改驳棱, 而不是簡單的修改集合元素的內(nèi)容)批什,那么這個時候程序就會拋出 ConcurrentModificationException 異常,從而產(chǎn)生 fail-fast 機制
產(chǎn)生原因:
當(dāng)調(diào)用容器的 iterator()方法返回 Iterater 對象時社搅,把容器中包含對象 的個數(shù)賦值給了一個變量 expectedModCount,在調(diào)用 next()方法時驻债,會比較 expectedModCount 與容器中實際對象的個數(shù)是否相等乳规,若二者不相等,則會拋 出 ConcurrentModificationException 異常

6.介紹一下Java中的集合框架


image.png

7.Collection和Collections的區(qū)別:

  • Collection是集合類的上級接口合呐,子接口主要有l(wèi)ist和set
  • Collections是針對集合類的幫助類暮的,提供了操作集合的工具方法,一系列靜態(tài)方法實現(xiàn)對集合的搜索淌实,排序冻辩,線程安全化操作
    -+
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市翩伪,隨后出現(xiàn)的幾起案子微猖,更是在濱河造成了極大的恐慌谈息,老刑警劉巖缘屹,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異侠仇,居然都是意外死亡轻姿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門逻炊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來互亮,“玉大人,你說我怎么就攤上這事余素”荩” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵桨吊,是天一觀的道長威根。 經(jīng)常有香客問我,道長视乐,這世上最難降的妖魔是什么洛搀? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮佑淀,結(jié)果婚禮上留美,老公的妹妹穿的比我還像新娘。我一直安慰自己伸刃,他們只是感情好谎砾,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著捧颅,像睡著了一般景图。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上隘道,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天症歇,我揣著相機與錄音郎笆,去河邊找鬼。 笑死忘晤,一個胖子當(dāng)著我的面吹牛宛蚓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播设塔,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼凄吏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了闰蛔?” 一聲冷哼從身側(cè)響起痕钢,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎序六,沒想到半個月后任连,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡例诀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年随抠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片繁涂。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡拱她,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扔罪,到底是詐尸還是另有隱情秉沼,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布矿酵,位于F島的核電站唬复,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏坏瘩。R本人自食惡果不足惜盅抚,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望倔矾。 院中可真熱鬧妄均,春花似錦、人聲如沸哪自。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽壤巷。三九已至邑彪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胧华,已是汗流浹背寄症。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工宙彪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人有巧。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓释漆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親篮迎。 傳聞我的和親對象是個殘疾皇子男图,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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