1、總體結構
Map和Collection是分開的。Collection下有List Queue Set 3個接口。
2、List結構
3、Set結構
4、Queue結構
5、Map結構
6、Deque結構
7、常用的List
ArrayList: 數組實現,初始長度10,每次擴容增加0.5倍(0.5倍可以通過位移>>1操作完成);
最大長度Integer.MAX_VALUE , 並非Integer.MAX_VALUE - 8;
LinkedList:雙向鏈表實現, 可用於棧 隊列實現。
線程安全:
Collections.synchronizedList(list)實現,
Vector也是線程安全的(過時 不建議使用)
CopyOnwriteArrayList
8、常用的Set
HashSet:以HashMap實現的,只能存一個null值
LinkedHashSet:繼承HashSet 可以按存入的順序進行迭代。
TreeSet:以TreeMap實現 內部按compareTo進行比較 所有不能存null,否則空指針異常。
ConcurrentHashSet(google guava實現)
9、常用的Queue
PriorityQueue : 非FIFO隊列 按優先級排序
線程安全:
ArrayBlockingQueue:數組實現 阻塞隊列 需要指明初始大小,線程安全
LinkedBlockingQueue:列表實現 阻塞隊列,可以不指明初始大小,默認Integer.MAX_VALUE;線程安全
ConcurrentLinkedQueue:鏈表實現 不阻塞 長度無限制;線程安全
PriorityBlockingQueue : 優先級隊列 線程安全版本
10、常用的Deque (雙向隊列 可當做棧使用,深度遍歷算法時可以使用)
ArrayDeque:動態數組 長度是2的冪次方;作為棧時性能比LinkedList好;非線程安全
LinkedList:雙向鏈表實現 ,非線程安全
線程安全:
ConcurrentLinkedDeque:鏈表實現
LinkedBlockingDeque:阻塞鏈表
棧的實現還有一個Stack類,繼承Vector,線程安全(過時了 不建議使用)
11、常用的Map
HashMap:只能存放一個null key
TreeMap: 不能存放null key
線程安全:
ConcurrentHashMap:線程安全