1. 程式人生 > >7.談談對集合的理解

7.談談對集合的理解

Java集合框架圖

         Java集合是java提供的一個工具包,全部繼承自java.util.*。主要包括兩大介面Collection介面和Map介面以及相關的工具類(Iterator迭代器介面、Enumeration列舉類、ArraysColletions)。

     (1)Collection是一個介面,包含List列表和Set集合。其中List是有序的佇列,元素值可以重複,索引從0開始,實現類有LinkedListArrayListVector;而Set是一個不允許有重複元素的集合,Set的實現類有HashSetTreeSetHashSet依賴於HashMap,它實際上是通過HashMap

實現的;TreeSet依賴於TreeMap,它實際上是通過TreeMap實現的。      (2)Map是一個對映介面,通過key-value鍵值對實現。實現類有HashMapTreeMapWeakHashMapHashtable。      (3)Iterator是遍歷集合的工具,Enumeration也是遍歷集合,但它的的功能要比Iterator少,只能在Hashtable, Vector, Stack中使用。       (4)Arrays和`Collections是運算元組、集合的兩個工具類。

下面是具體一點的比較:       (1) ArrayList, LinkedList

, Vector, Stack是List的4個實現類,比較他們的異同。

     1)ArrayList 是一個數組佇列,相當於動態陣列。它由陣列實現,隨機訪問效率高,隨機插入、隨機刪除效率低。

     2)LinkedList 是一個雙向連結串列。它也可以被當作堆疊、佇列或雙端佇列進行操作。LinkedList隨機訪問效率低,但隨機插入、隨機刪除效率高。

     3)Vector 是向量佇列,和ArrayList一樣,它也是一個動態陣列,由陣列實現。但是ArrayList是非執行緒安全的,而Vector是執行緒安全的。

     4)Stack 是棧,它繼承於Vector。它的特性是:先進後出(FILO, First In Last Out)。

      (2)HashMapHashTableTreeMap的區別

     1)HashMap是鍵值對的方式儲存的,但不能保證次序,單執行緒;

     2)HashTableHashMap儲存方式相同,但是是執行緒安全的;

     3)TreeMap是有序的鍵值對,基於紅黑樹排序。