技術複習-java集合類

經常使用集合 Set MAP List

一.List

  1. ArrayList 由數組構成的List object[] elementData 實際存儲的數組 int size 實際長度 int DEFAULT_CAPACITY = 10 初始容量10. 擴容過程:put的時候若是size+1>elementData.length,則對elementData擴容至1.5倍數組

  2. LinkedList 由雙向鏈表構成的數組安全

  3. Vector 由數組構成的線性安全的List 在每一個方法前加synchronized來保證安全。優化

2、Map

保存KV對,K不可重複code

  1. HashMap Node<K,V>[] table 實際存儲是由鏈表組成的數組。 int DEFAULT_INITIAL_CAPACITY = 1 << 4 數組默認長度16 final float loadFactor; 負載因子,初始值0.75.當前數組長度 * loadFactor來判斷是否須要擴容。 int threshold ; The next size value at which to resize (capacity * load factor). 擴容過程:若是size+1 > threshold 則進行擴容,table長度擴大2倍。而後鏈表上的一一挪到正確的新的數組上。

1.8之後HashMap下的鏈表進行優化了,改爲當鏈表的長度大於8的時候優化成紅黑樹。blog

  1. ConcurrentHashMap 線性安全的,經過分段把鎖的粒度下降,提升效率ci

  2. Hashtable 線性安全,經過方法前加上synchronized來鎖,效率較低。element

3、HashSet

保存K HashMap<E,Object> map; public boolean add(E e) { return map.put(e, PRESENT)==null; } HashSet內部實際是一個HashMap,把值做爲Key放入HashMap中。it

相關文章
相關標籤/搜索