集合

根據需求一共有這麼幾種東東:
List
Map
Set
Dictionary
Queue

List這個用的最多,就是一個有序的列表
Map key-value 對
set 無序列表
Dictionary 完全可以被Map替代
Queue 隊列

實現

所有的實現都是基於數組或者鏈表實現的,或者數組+鏈表 鏈表+數組
鏈表插入刪除速度快,數組查詢快省內存

List包含子類有:
AbstractList

注意這裏會有一些東西寫的比較奇怪,比如AbstractList繼承自AbstractCollection,實現了List接口,
並且list還實現了Collection的接口。這是因爲java不支持多繼承。代碼想讓List是接口,而不是抽象類。
這裏只是爲了代碼複用罷了

這裏我們大概可以這麼理解,AbstractList這個就是爲list的實現提供了部分的必要函數,其實沒啥亂用,關鍵還是那個遍歷器。
下面我們分析一下所有的實現類
ArrayList 就是一個數組,需要時候擴容,插入需要複製後面的部分。

RandomAccess 這是僅僅是接口,只是用來查詢時候,方式不同

LinkedList 這是通過鏈表實現的,順手實現了Queue接口。

Vector 這個就是一個線程安全的ArrayList.沒什麼可以說的

Stack 繼承自 Vector 原理一個毛樣。多了棧的一些方法

進入核心map

HashMap 數組+鏈表

TreeMap 二叉樹

Hashtable 線程安全的HashMap

SortedMap

下面關注一下set。

set是無序的,看下實現

HashSet 這個是HashMap來存貯的

TreeSet 就是TreeMap實現的。

LinkedHashSet 他就是HashSet 的子類,貌似只在查找時候纔不一樣

所以set基本就是其他的封裝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章