Java源碼解讀掃盲【集合預覽】

接口類圖

        Java Collection由兩套並行的接口組成,一套是Collection接口,一套是Map接口,以下圖數組

在此輸入圖片描述

List:add/remove/get/set

        ArrayList:其實就是數組,利用Object[]實現的List,容量一大,頻繁增刪就是噩夢,適合隨機查找安全

        LinkedList:單向鏈表,增長了push|pop|remove|pull,好囉嗦,其實都是removeFirst;數據結構

        Vector:歷史遺留產物,同步版的ArrayList,代碼和ArrayList太像;性能

        Stack:繼承自Vector,Java裏其實沒有純粹的Stack,本身實現一個吧,用組合的方式,封裝一下LinkedList便可;spa

        Queue:原本是單獨的一類,不過在SUN的JDK裏就是用LinkedList來提供這個功能的,主要方法是offer/pull/peek;線程

Set:add/remove

        HashSet:內部採用HashMap實現的; 繼承

        LinkedHashSet:同上,採用LinkedHashMap實現;接口

        TreeSet:同上,採用TreeMap實現;圖片

Map:put/get/remove

        HashMap/HashTable:散列表,啥都不說了,和ArrayList同樣採用數組實現,超過初始容量會對性能有損耗; rem

        LinkedHashMap:這個類有點意思,繼承自HashMap,但經過重寫嵌套類HashMap.Entry實現了鏈表結構,一樣有容量的問題;

        Properties:繼承的HashTable;

集合類的區分因素

        1.支持哪些操做接口

        2.內部實現的數據結構,及其相應的時空複雜度

        3.是否對插入元素的數量有限制

        4. 是否支持插入null元素

        5. 是否線程安全

        6. 是否支持阻塞

各個類的實現源碼後面詳細看

相關文章
相關標籤/搜索