1、集合部落格 (一個優秀的部落格)
http://www.cnblogs.com/skywang12345/p/3323085.html
2、Java中的集合類及關系圖
- Collection和Map是Java集合架構的根接口。
- List接口和Set接口繼承自Collection接口。
- Set無序不允許元素重複。
- HashSet (無序)
- TreeSet (有序)
- List有序且允許元素重複。
- ArrayList
- LinkedList
- Vector
- Map也屬于集合系統,但和Collection接口沒關系。Map是key對value的映射集合,其中key列就是一個集合。key不能重複,但是value可以重複。
- HashMap (無序)
- TreeMap (有序)
- WeakHashMap
- Hashtable (無序,線程安全)
- SortedSet和SortedMap接口對元素按指定規則排序,SortedMap是對key列進行排序。
3、HashMap源碼分析(★★★)
- HashMap源碼分析——JDK1.6 http://www.cnblogs.com/skywang12345/p/3310835.html
- HashMap源碼分析——JDK1.7 http://blog.csdn.net/crazy1235/article/details/75451812
- HashMap源碼分析——JDK1.8 http://blog.csdn.net/hbtj_1216/article/details/76019686
- 紅黑樹 http://www.cnblogs.com/skywang12345/p/3245399.html
- HashMap中(tab.length - 1) & hash 妙解: http://blog.csdn.net/hbtj_1216/article/details/76623754
不正當使用HashMap導緻cpu 100%的問題(多線程中)
http://ifeve.com/hashmap-infinite-loop/
4、HashTable源碼分析
- Hashtable源碼解析——JDK1.8 http://blog.csdn.net/hbtj_1216/article/details/76150620
5、HashMap和Hashtable的差別
HashMap和Hashtable的差別 http://blog.csdn.net/hbtj_1216/article/details/76166472
LinkedHashMap源碼解析
http://www.jianshu.com/p/0bff048cd71f
TreeMap源碼解析
http://www.jianshu.com/p/fc5e16b5c674
WeakHashMap實作原理
http://www.cnblogs.com/skywang12345/p/3311092.html
http://www.jianshu.com/p/73df62c62cda
6、ArrayList、LinkedList、Vector、CopyOnWriteArrayList源碼解析
- fail-fast的原理 http://www.cnblogs.com/skywang12345/p/3308762.html
- ArrayList源碼解析——JDK1.8 http://blog.csdn.net/hbtj_1216/article/details/76169259
- LinkedList源碼解析——JDK1.8 http://blog.csdn.net/hbtj_1216/article/details/76180754
- Vector源碼解析——JDK1.8 http://www.cnblogs.com/skywang12345/p/3308833.html
- CopyOnWriteArrayList源碼解析——JDK1.8 http://blog.csdn.net/hbtj_1216/article/details/76186026
7、ArrayList和Vector差別
- ArrayList和Vector都實作了List接口,都是通過數組實作的。
- ArrayList是非線程安全的, Vector是線程安全的。
- List第一次建立的時候,會有一個初始大小,随着不斷向List中增加元素,當List 認為容量不夠的時候就會進行擴容。ArrayList增長原來的50%,Vector預設情況下自動增長原來一倍的數組長度。
8、ArrayList和LinkedList差別及使用場景
- 差別
- ArrayList底層是用數組實作的,可以認為ArrayList是一個可改變大小的數組, 查找速度快。随着越來越多的元素被添加到ArrayList中,其大小是動态增加的。
- LinkedList底層是通過雙向連結清單實作的, LinkedList和ArrayList相比,增删的速度較快。但是查詢和修改值的速度較慢。同時,LinkedList還實作了Queue接口,是以他還提供了offer(),peek(), poll()等方法。
- 使用場景
- ArrayList更适合快速檢索、以及在末尾插入或删除(數組的特性)。
- LinkedList更适合從中間插入或者删除(連結清單的特性)。
18.Collection和Collections的差別
- java.util.Collection 是一個集合接口。它提供了對集合對象進行基本操作的通用接口方法。Collection接口在Java 類庫中有很多具體的實作。Collection接口的意義是為各種具體的集合提供了最大化的統一操作方式。
- java.util.Collections 是一個包裝類,工具類。它包含有各種有關集合操作的靜态多态方法。此類不能執行個體化,就像一個工具類,服務于Java的Collection架構。
19、ConcurrentHashMap源碼分析(★★★)
ConcurrentHashMap源碼分析——JDK1.7:http://blog.csdn.net/hbtj_1216/article/details/76205903
ConcurrentHashMap源碼分析——JDK1.8 : http://www.jianshu.com/p/c0642afe03e0
ConcurrentHashMap1.7和1.8的不同實作 : http://www.jianshu.com/p/e694f1e868ec
CAS(Compare And Swap)詳解: http://www.jianshu.com/p/fb6e91b013cc