天天看點

Java集合小記

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