ConcurrentSkipListMap

為了引出 ConcurrentSkipListMap渐裸,先來簡單理解下什么是跳表。

對于單鏈表仍劈,即使鏈表是有序的厕倍,如果想要在其中查找某個數(shù)據(jù),也只能從頭到尾遍歷鏈表贩疙,這樣效率自然就會很低讹弯,跳表就不一樣了。跳表是一種可以用來快速查找的數(shù)據(jù)結構这溅,有點類似于平衡樹组民。它們都可以對元素進行快速的查找。但一個重要的區(qū)別是:對平衡樹的插入和刪除往往很可能導致平衡樹進行一次全局的調(diào)整悲靴;而對跳表的插入和刪除臭胜,只需要對整個數(shù)據(jù)結構的局部進行操作即可。這樣帶來的好處是:在高并發(fā)的情況下,需要一個全局鎖庇楞,來保證整個平衡樹的線程安全榜配;而對于跳表否纬,則只需要部分鎖即可吕晌。這樣,在高并發(fā)環(huán)境下临燃,就可以擁有更好的性能睛驳。就查詢的性能而言,跳表的時間復雜度是 O(logn)膜廊, 所以在并發(fā)數(shù)據(jù)結構中乏沸,JDK 使用跳表來實現(xiàn)一個 Map。

跳表的本質(zhì)爪瓜,是同時維護了多個鏈表蹬跃,并且鏈表是分層的

2級索引跳表

最低層的鏈表,維護了跳表內(nèi)所有的元素铆铆,每上面一層鏈表蝶缀,都是下面一層的子集。

跳表內(nèi)所有鏈表的元素都是排序的薄货。查找時翁都,可以從頂級鏈表開始找。一旦發(fā)現(xiàn)被查找的元素大于當前鏈表中的取值谅猾,就會轉(zhuǎn)入下一層鏈表繼續(xù)找柄慰。這也就是說在查找過程中,搜索是跳躍式的税娜。如上圖所示坐搔,在跳表中查找元素18。

在跳表中查找元素18

查找18 的時候敬矩,原來需要遍歷 18 次概行,現(xiàn)在只需要 7 次即可。針對鏈表長度比較大的時候谤绳,構建索引占锯,查找效率的提升就會非常明顯。

從上面很容易看出缩筛,跳表是一種利用空間換時間的算法消略。

使用跳表實現(xiàn) Map,和使用哈希算法實現(xiàn) Map 的另外一個不同之處是:哈希并不會保存元素的順序瞎抛,而跳表內(nèi)所有的元素都是排序的艺演。因此,在對跳表進行遍歷時,你會得到一個有序的結果胎撤。所以晓殊,如果你的應用需要有序性,那么跳表就是你不二的選擇伤提,JDK 中實現(xiàn)這一數(shù)據(jù)結構的類是 ConcurrentSkipListMap巫俺。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肿男,隨后出現(xiàn)的幾起案子介汹,更是在濱河造成了極大的恐慌,老刑警劉巖舶沛,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘹承,死亡現(xiàn)場離奇詭異,居然都是意外死亡如庭,警方通過查閱死者的電腦和手機叹卷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坪它,“玉大人骤竹,你說我怎么就攤上這事∮纯” “怎么了瘤载?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長卖擅。 經(jīng)常有香客問我鸣奔,道長,這世上最難降的妖魔是什么惩阶? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任挎狸,我火速辦了婚禮,結果婚禮上断楷,老公的妹妹穿的比我還像新娘锨匆。我一直安慰自己,他們只是感情好冬筒,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布恐锣。 她就那樣靜靜地躺著,像睡著了一般舞痰。 火紅的嫁衣襯著肌膚如雪土榴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天响牛,我揣著相機與錄音玷禽,去河邊找鬼赫段。 笑死,一個胖子當著我的面吹牛矢赁,可吹牛的內(nèi)容都是我干的糯笙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼撩银,長吁一口氣:“原來是場噩夢啊……” “哼给涕!你這毒婦竟也來了?” 一聲冷哼從身側響起蜒蕾,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤稠炬,失蹤者是張志新(化名)和其女友劉穎焕阿,沒想到半個月后咪啡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡暮屡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年撤摸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褒纲。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡准夷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出莺掠,到底是詐尸還是另有隱情衫嵌,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布彻秆,位于F島的核電站楔绞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏唇兑。R本人自食惡果不足惜酒朵,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扎附。 院中可真熱鬧蔫耽,春花似錦、人聲如沸留夜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碍粥。三九已至鳖眼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間即纲,已是汗流浹背具帮。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工博肋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蜂厅。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓匪凡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親掘猿。 傳聞我的和親對象是個殘疾皇子病游,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

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