一 前言 在前面幾篇,我們已經學習了常見了Map,下面開始閱讀實現Collection接口的常見的實現類。在有了之前源碼的鋪墊之后,我們后面的閱讀之路將會變得簡單很多,因為很多Collection的結構與Map的類似,甚至有不少是直接用了Map里的方法。接下來讓我們一起來看一下ArrayList的源碼。 二 ArrayList結構概覽 顧名思義,ArrayList的結構實際就是一個Object 。 ...
2017-12-22 09:54 0 1161 推薦指數:
一、前言 筆者之前看過一篇關於jdk1.8的HashMap源碼分析,作者對里面的解讀很到位,將代碼里關鍵的地方都說了一遍,值得推薦。筆者也會順着他的順序來閱讀一遍,除了基礎的方法外,還添加了很多其他補充內容。 二、HashMap結構概覽 以下是HashMap的數據結構: 不同於之前 ...
一、前言 今天開始閱讀jdk1.8的集合部分,平時在寫項目的時候,用到的最多的部分可能就是Java的集合框架,通過閱讀集合框架源碼,了解其內部的數據結構實現,能夠深入理解各個集合的性能特性,並且能夠幫助自己在今后的開發中避免犯一些使用錯誤。另外筆者自己也是摸着石頭過河,如果有描述不當的地方 ...
一、前言 在前面兩篇隨筆中,我們提到過,當HashMap的桶過大的時候,會自動將鏈表轉化成紅黑樹結構,當時一筆帶過,因為我們將留在本章中,針對TreeMap進行詳細的了解。 二、TreeMap ...
一、前言 這一篇里,我將對HashSet、LinkedHashSet、TreeSet進行匯總分析,並不打算一一進行詳細介紹,因為JDK對Set的實現進行了取巧。我們都知道Set不允許出現相同的對象,而Map也同樣不允許有兩個相同的Key(出現相同的時候,就執行更新操作)。所以Set里的實現 ...
一、前言 在上一篇隨筆中,我們分析了HashMap的源碼,里面涉及到了3個鈎子函數,用來預設給子類——LinkedHashMap的調用,所以趁熱打鐵,今天我們來一起看一下它的源碼吧。 二、LinkedHashMap的結構與繼承關系 ### 2.1 LinkedHashMap ...
一、前言 在前一篇博客中,我們對TreeMap的繼承關系進行了分析,在這一篇里,我們將分析TreeMap的數據結構,深入理解它的排序能力是如何實現的。這一節要有一定的數據結構基礎,在閱讀下面的之前,推薦大家先看一下:《算法4》深入理解紅黑樹。(個人比較喜歡算法四這里介紹的紅黑樹實現:從2-3樹 ...
一、前言 分析了Map中主要的類之后,下面我們來分析Collection下面幾種常見的類,如ArrayList、LinkedList、HashSet、TreeSet等。下面通過JDK源碼來一起分析ArrayList底層是如何實現的。(PS:把JVM看完了之后終於可以有成片的時間來閱讀源碼 ...