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

淺談對java集合的理解

首先是集合的框架圖,
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個實現類,比較他們的異同。


  • ArrayList 是一個數組佇列,相當於動態陣列。它由陣列實現,隨機訪問效率高,隨機插入、隨機刪除效率低。
  • LinkedList 是一個雙向連結串列。它也可以被當作堆疊、佇列或雙端佇列進行操作。LinkedList隨機訪問效率低,但隨機插入、隨機刪除效率高。
  • Vector 是向量佇列,和ArrayList一樣,它也是一個動態陣列,由陣列實現。但是ArrayList是非執行緒安全的,而Vector是執行緒安全的。
  • Stack 是棧,它繼承於Vector。它的特性是:先進後出(FILO, First In Last Out)。
  • 2.HashMapHashTableTreeMap的區別


  • HashMap是鍵值對的方式儲存的,但不能保證次序,單執行緒;
  • HashTableHashMap儲存方式相同,但是是執行緒安全的;
  • TreeMap是有序的鍵值對,基於紅黑樹排序。