本文源碼:GitHub·點這裏 || GitEE·點這裏git
集合容器是Java開發中最基礎API模塊,一般用來存儲運行時動態建立的元素,基本特色以下:github
這裏對存儲數量是受到程序和內存等環境制約的,從List的get()方法中能夠看出,index的範圍是Integer.MAX_VALUE。數組
三大核心接口:List、Set繼承Collection, Map獨立接口緩存
List與Set體系安全
List體系核心API:ArrayList,LinkedList、Vector數據結構
Set體系核心API:HashSet、TreeSet、LinkedHashSet架構
Queue隊列API:PriorityQueue、LinkedHashSet併發
Map體系異步
Map體系核心API:HashMap、LinkedHashMap、TreeMap、Hashtable分佈式
基本熟練使用並理解集合容器,須要知道如上幾塊內容:API基礎用法,線程安全問題;容器大小與擴容;結構特色,數組、鏈表、哈希表;
Collection:集合容器的根接口,定義公共方法;
List體系:
維護Object數組實現,特色:查詢快,增刪慢,非線程安全,因此效率高。
底層維護鏈表數據結構實現,特色:查詢慢,增刪快,非線程安全,因此效率高。
底部維護Object數組,實現和ArrayList同樣,可是Vector是線程安全,效率低。
Set體系:
底層是使用了哈希表來支持的,特色:存取速度快,元素惟一且無序。
底層數據結構是鏈表和哈希表,鏈表保證元素有序性,哈希表保證元素惟一性,非線程安全。
數據結構是紅黑樹,若是元素具有天然順序的特性,那麼就按照元素天然順序的特性進行排序,或者基於比較器自定義排序。
Map體系:
Map接口的實現類,具有的特色:存儲的數據都是以鍵值對的方式,鍵不能夠重複,值可重複。
底層使用hashCode表來實現向HashMap中添加元素,容許使用null值和null鍵,不保證元素的順序固定。
TreeMap:基於二叉樹的數據結構實現的,會對具有天然特性的鍵進行排序存儲:元素的鍵具有天然特性,直接排序存儲;不具有天然特性,實現Comparable接口,在ComparaTo中定義排序規則。
線程安全,相對效率低,不容許使用null值。
GitHub·地址 https://github.com/cicadasmile GitEE·地址 https://gitee.com/cicadasmile
推薦閱讀:架構設計系列