Java集合小記

youbai五月發表於2018-04-15
Collection下集合
List
  是一個有序集合,維持的順序是元素插入的順序,允許元素重複
1.ArrayList:
  陣列,查詢元素很快,但刪除元素和新增元素的效率相對較差,預設大小是 10 個元素

2.LinkedList: 
  雙向連結串列,刪除、新增元素的效率很高,但查詢元素的的效率較差
3.Vector:
  執行緒安全的按順序存放的陣列,大部分public方法都由synchronized修飾
Set
  不與許重複元素
1.HashSet:
  實現是HashMap,按照key的雜湊值儲存,無序

2.TreeSet:
  值有序,按照元素值大小排序,實現是NavigableMap(SortedMap子類/TreeMap)

3.SortedSet介面 : 有序,自己實現comparator方法來排序

4.LinkedHashSet:  維持的順序是元素插入的順序

不屬於collection,但與set超有關係的… …
Map
1.HashMap : 元素無序,允許一個null key,預設大小是16個元素

2.TreeMap : 使用紅黑樹實現
3.SortedMap介面 : 需自己實現comparator方法實現排序

4.LinkedHashMap : 維持的順序是元素插入的順序
/**
* The iteration ordering method for this linked hash map: <tt>true</tt>
* for access-order, <tt>false</tt> for insertion-order.
*/
// 如果為true,則按照訪問順序;如果為false(default),則按照插入順序。
private final boolean accessOrder;
/**
* 雙向連結串列的表頭元素。
 */
private transient Entry<K,V> header;

/**
* LinkedHashMap的Entry元素。
 */
// 繼承HashMap的Entry元素,又儲存了其上一個元素before和下一個元素after的引用
private static class Entry<K,V> extends HashMap.Entry<K,V> {
    Entry<K,V> before, after;
    ……
}
5.Hashtable : 
  是同步的,比較慢,幾乎所有的 public 的方法都是 synchronized 的,而有些方法也是在內部通過 synchronized 程式碼塊來實現

,不允許有個空的 key



相關文章