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