淺談對java集合的理解
阿新 • • 發佈:2019-02-09
首先是集合的框架圖,
圖片來源
Java集合是java提供的一個工具包,全部繼承自java.util.*
。主要包括兩大介面Collection
介面和Map
介面以及相關的工具類(Iterator
迭代器介面、Enumeration
列舉類、Arrays
和Colletions
)。
1、Collection
是一個介面,包含List
列表和Set
集合。其中List
是有序的佇列,元素值可以重複,索引從0開始,實現類有LinkedList
,ArrayList
,Vector
;而Set
是一個不允許有重複元素的集合,Set
的實現類有HashSet
和TreeSet
。HashSet
依賴於HashMap
,它實際上是通過HashMap
TreeSet
依賴於TreeMap
,它實際上是通過TreeMap
實現的。 2、Map是一個對映介面,通過
key-value
鍵值對實現。實現類有HashMap
,TreeMap
,WeakHashMap
,Hashtable
。 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.HashMap
、HashTable
、TreeMap
的區別
HashMap
是鍵值對的方式儲存的,但不能保證次序,單執行緒; HashTable
與HashMap
儲存方式相同,但是是執行緒安全的; TreeMap
是有序的鍵值對,基於紅黑樹排序。