Java 集合源碼剖析系列01: 總體框架

前言:

  • Java, Android 開發(fā)也X年有余了梨与,只是平時寫業(yè)務居多捡硅,對java 集合技術只是看看秉继,未有總結(jié)潘明,基礎不夠扎實。雖然集合框架經(jīng)常用秕噪,但是我們還是要仔細看看原理钳降,不僅要會用,也要知道為什么要這么用腌巾,夯實基礎遂填,才能突破自己技術瓶頸。

Java集合簡介:

  • Java集合是java提供的工具包:
    包含了常用的數(shù)據(jù)結(jié)構(gòu):數(shù)組澈蝙、鏈表吓坚、隊列、棧灯荧、映射等礁击。工具包位置是java.util.*。
    Java集合主要可以劃分為 5個部分
    List列表、Set集合哆窿、Map映射链烈、迭代器(Iterator、Enumeration)挚躯、工具類(Arrays和Collections)强衡。

**Java集合整體框架圖(如下) 一圖勝千言 **:

image.png

說明
從上面整體結(jié)構(gòu)圖可以看出:集合類主要分為兩大類:Collection和Map。

  1. Collection 是高度抽象出來的一個接口码荔,它包含了集合的基本操作和屬性漩勤。
    Collection主要分為List和Set兩大分支。

(1)List 是一個接口缩搅,表示一個列表越败;
每一個元素都有它的索引。第一個元素的索引值是0硼瓣,其中的元素可以重復眉尸;它的實現(xiàn)類主要有 ArrayList、LinkedList巨双、Stack噪猾、 Vector ;其中 LinkedList還是實現(xiàn)了Queue接口,因此也可以作為隊列使用筑累。

(2) Set 接口是一個不允許有重復元素的集合(通過hashcode和equals函數(shù)保證)袱蜡。
Set的實現(xiàn)類有HastSet和TreeSet;HashSet是通過Map中的HashMap實現(xiàn)的慢宗;TreeSet 是通過Map中的TreeMap實現(xiàn)的坪蚁;TreeSet還實現(xiàn)了SortedSet接口,因此是有序的集合镜沽。

  1. Map 是一個映射接口敏晤,其中的每個元素都是一個key-value鍵值對;AbstractMap實現(xiàn)了Map接口中的大部分函數(shù)缅茉,TreeMap嘴脾、HashMap、WeakHashMap等實現(xiàn)類都通過繼承AbstractMap來實現(xiàn)蔬墩; Hashtable雖然繼承于Dictionary译打,但它實現(xiàn)了Map接口。

  2. 迭代器
    Iterator 是遍歷集合的迭代器(不能遍歷Map拇颅,只用來遍歷Collection)奏司,從上圖可以看到Collection依賴 于Iterator,是因為Collection的實現(xiàn)類都要實現(xiàn)iterator()函數(shù)樟插,返回一個Iterator對象韵洋。
    ListIterator 是專門為遍歷List而存在的竿刁。
    Enumeration 是JDK 1.0引入的抽象類。作用和Iterator一樣搪缨,也是遍歷集合食拜;但是Enumeration的功能要比Iterator少;它只能再Hashtable勉吻、Vector和Stack中使用。

  3. 最后我們看看Arrays和Collections旅赢。它們是操作數(shù)組齿桃、集合的兩個工具類。

我們對上面的集合整體框架了解之后煮盼,我們接下來對每個類分別進行分析短纵。

collection.jpg

JDK12 API : https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/package-summary.html

請點贊!因為所有的鼓勵是我堅持的最大動力僵控!

最后編輯于
?著作權(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é)果婚禮上,老公的妹妹穿的比我還像新娘灾测。我一直安慰自己爆价,他們只是感情好垦巴,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铭段,像睡著了一般骤宣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上序愚,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天憔披,我揣著相機與錄音,去河邊找鬼爸吮。 笑死芬膝,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的形娇。 我是一名探鬼主播锰霜,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桐早!你這毒婦竟也來了癣缅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤哄酝,失蹤者是張志新(化名)和其女友劉穎友存,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陶衅,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡爬立,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了万哪。 大學時的朋友給我發(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
  • 正文 我出身青樓,卻偏偏與公主長得像尝艘,于是被迫代替她去往敵國和親演侯。 傳聞我的和親對象是個殘疾皇子姿染,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344