Java Collection由兩套並行的接口組成,一套是Collection接口,一套是Map接口,以下圖數組
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;線程
HashSet:內部採用HashMap實現的; 繼承
LinkedHashSet:同上,採用LinkedHashMap實現;接口
TreeSet:同上,採用TreeMap實現;圖片
HashMap/HashTable:散列表,啥都不說了,和ArrayList同樣採用數組實現,超過初始容量會對性能有損耗; rem
LinkedHashMap:這個類有點意思,繼承自HashMap,但經過重寫嵌套類HashMap.Entry實現了鏈表結構,一樣有容量的問題;
Properties:繼承的HashTable;
1.支持哪些操做接口
2.內部實現的數據結構,及其相應的時空複雜度
3.是否對插入元素的數量有限制
4. 是否支持插入null元素
5. 是否線程安全
6. 是否支持阻塞
各個類的實現源碼後面詳細看