java集合

1、傳統集合
collection:
list:ArrayList  LinkedList  Vector Stack
set:HashSet  TreeSet
Map:HashMap  TreeMap
2、簡單的再也不多說,只說不會的!
一、Vector:       默認建立大小爲10的Object數組(因此是基於數組實現的) add, remove方法都是添加了 synchronized關鍵字的  因此線程安全
    vector     擴大數組  是擴大兩倍         線程安全
    ArrayList           擴大   *1.5+1                 線程不安全
二、Stack : 先進後出
         繼承於Vector,因此也是線程安全的!
         push                   pop            peek
3
HashSet   基於HashMap實現,使用的是hashMap中的Key, 無容量限制 ,非線程安全
TreeSet   基於TreeMap實現,        支持排序         ,非線程安全
4
         HashMap  基於Entry數組實現, key,value 後出entry, 無容量限制,非線程安全
         TreeMap  基於 紅黑樹實現,無容量限制,非線程安全
3、各類實現方式
ArraylIst           數組
linkedList          雙向  鏈表
Vector              數組
Stack               數組
HashSet             基於HashMap實現
TreeSet             基於TreeMap 實現
HashMap             基於Entry對象的數組實現
TreeMap             基於  紅黑樹實現
4、傳統集合的一些性能
         一、set 和 map 類型的查找是經過hash後,再到鏈表上查找,因此速度相對來講要快!
         二、當數量超過萬級別:
                插入:arrayList       Vector的影響比較大,其餘基本沒什麼變化
                查找和刪除;list    的性能降低比較嚴重,set和map基本不受影響
5、併發集合
如下都是線程安全的:
ConcurrentHashMap       在每個分段上都用鎖進行保護,從而讓鎖的粒度更精細一些,併發性能更好,而HashMap沒有鎖機制,不是線程安全的。
CopyOnWriteArrayList    在讀寫操做無鎖的 ArrayList
CosyOnWriteArraySet     基於CopyOnWriteArrayList實現
ArrayBlockingQueue      基於數組,先進先出,阻塞讀寫
ArrayBlockingQueue(int capacity)建立一個帶有給定的(固定)容量和默認訪問策略的 ArrayBlockingQueue。同時初始化鎖和兩個鎖上的condition,一個爲notEmpty  一個爲notFull數組

相關文章
相關標籤/搜索