在Java集合框架中定義的所有接口和類都存儲在java.util包中,並且集合框架中的所有具體類都實現了java.lang.Cloneable和java.io.Serializable接口,即它們的實例都是可複製並可序列化的。
集合框架大體的體系結構如下,省略了具體的便利類,如AbstractCollection,AbstractSet等。
Java Collections Framework(Java集合框架)
—collection((接口)集合:爲了存儲一個元素集合)
——Set((接口)規則集,它的實例用於存儲一組不重複的元素)
————HashSet(散列集)
——————LinkedHashSet(鏈式散列集)
————TreeSet(樹形集)
——List((接口)線性表接口,它的實例用於存儲一個由元素構成的有序集合)
————ArrayList(數組線性表類)
————LinkedList(鏈表類)
————Vector(向量類)
——————Stack(棧類擴展了Vector類)
——Queue((接口)隊列,它的實例用於存儲用先進先出方式處理的對象)
————Deque((接口)雙端隊列,是“double ended queue(雙端隊列)”的縮寫,一個線性 collection,支持在兩端插入和移除元素)
——————LinkedList(注意這個類,也就是說它既實現了List,又實現了Deque,所以我們可以用LinkedList創建一個隊列)
——————ArrayDeque(Deque接口的大小可變數組的實現類)
————BlockingDeque((接口)阻塞雙端隊列)
——————LinkedBlockingDeque(一個基於已鏈接節點的、任選範圍的阻塞雙端隊列類)
————BlockingQueue((接口)阻塞隊列)
——————LinkedBlockingDeque(這個類既實現了BlockingDeque,又實現了BlockingQueue)
——————ArrayBlockingQueue(一個由數組支持的有界阻塞隊列)
——————LinkedBlockingQueue(一個基於已鏈接節點的、範圍任意的阻塞隊列)
——————PriorityBlockingQueue(優先阻塞隊列,一個無界阻塞隊列,它使用與類PriorityQueue相同的順序規則,並且提供了阻塞獲取操作)
——————SynchronousQueue(同步隊列,一種阻塞隊列,其中每個插入操作必須等待另一個線程的對應移除操作 ,反之亦然)
——————DelayQueue(Delayed 元素的一個無界阻塞隊列,只有在延遲期滿時才能從中提取元素)
————PriorityQueue(一個基於優先級堆的無界優先級隊列)
—map((接口)圖:存儲鍵/值對)
————HashMap(基於哈希表的 Map 接口的實現。此實現提供所有可選的映射操作,並允許使用null 值和null 鍵)
——————LinkedHashMap(Map 接口的哈希表和鏈接列表實現,具有可預知的迭代順序)
————TreeMap(基於紅黑樹(Red-Black tree)的NavigableMap(擴展的SortedMap)實現。該映射根據其鍵的自然順序進行排序,或者根據創建映射時提供的Comparator進行排序,具體取決於使用的構造方法)
————HashTable(此類實現一個哈希表,該哈希表將鍵映射到相應的值。任何非 null
對象都可以用作鍵或值)
對於規則集和線性表,規則集比線性表更高效。如果我們不需要重複,那就選擇規則集,如果不僅不需要重複,而且不需要特別的順序,就選散列集