1. 程式人生 > >關於Java集合類總結

關於Java集合類總結

Collection, Map介面 兩類介面,其中Collection介面java沒有提供直接實現類而是提供了連個子介面分別是List和Set。

List和Set都繼承Collection介面。所以也可以說java提供的集合最上乘介面有3個 List Set Map

   
List 有序列表,允許存放重複的元素,實現類 LinkedList ArrayList Vector 
   
ArrayList是最常用的和常用的也是最好理解的,特點查詢快,增刪慢,執行緒不同步,屬於輕量級集合。ArrayList內部是一個數組實現的,也就具備了陣列一樣的儲存特點。
都知道在Java中我們建立一個數組就要給定一個組數的大小,一般情況下建立ArrayList物件並不指定大小,也可以指定這個預設大小。在不指定大小的時候
預設為10,當新增物件到ArrayList中超過10的時候,那會增加的這個陣列的長度一般情況大約是初始的長度一半左右的個數。這個動作是將現有陣列拷貝一個新數組裡面
   
Vector,它和ArrayList一樣,唯一區別是它是執行緒同步的,也就是說在單位時間內只有一個執行緒可以進行寫如資料的操作。當然這樣就會影響效率。
   
LinkedList,增刪快,查詢慢,執行緒不同步。字面上就可以看的出來,它的內部實現和ArrayList不一樣。它內部是一個連結串列結構,也就說他的每一個元素都會記錄它下一個和上一個元素的位置
每一個元素的記憶體地址不連續,所以查詢比較慢。也為LinkedList在增刪的時候不需要做大量的陣列元素移位動作,所以增刪要比其他都要快速。
在使用LinkedList執行緒安全的時候可以這樣,建立一個執行緒安全LinkedList
List<String> linkedList = Collections.synchronizedList(new LinkedList<String>())
   
Set 無序集合,不允許存放重複的元素, 根據這個特點我們可以排除重複的資料或者物件。實現類, HashSet LinkedHashSet 和子介面SortedSet,對Set排序實現類 :TreeSet
   
HashSet 本質上是一個HashMap ,所以它的儲存方式和方法都與HashMap一樣。HashSet是根據Key來儲存物件的,也就是說Key一樣那麼後面一個數據會覆蓋原有的資料
   
LinkedHashSet 它和HashSet 維護著一個雙重連結列表。因為有這個連結串列所以說儲存的資料是有序的。執行緒不安全
   
TreeSet 是一個具有排序能力的集合,如果要將一個自定義物件放入TreeSet內,那麼自定義物件必須實現Comparable介面,重寫compareTo方法。TreeSet在執行add方法的時候
會呼叫物件compareTo方法來進行排序。
   
//建立一個執行緒安全Set
Set<String> linkedList = Collections.synchronizedSet(new LinkedSet<String>())
   
Map 
   
HashMap 鍵值對,key不能重複,但是value可以重複;key的實現就是HashSet;value對應著放;允許null的鍵或值;
   
HashTable 執行緒安全的HashMap 效率低於HashMap
   
Properties:key value都是String 對應的配置檔案的讀取
   
TreeMap 排序好的Map 主要是值的是key排序 這裡面的key 和TreeSet一樣必須實現Comparable介面