java容器詳解(二)Collection與Collections

Collection 表示一組被一個或多個規則約束的對象,這些對象也稱爲 collection 的元素。一些 collection 容許有重複的元素,而另外一些則不容許。一些 collection 是有序的,而另外一些則是無序的。Collections是Collection的工具類,定義了對Collection的經常使用操做。Collection是線性數據類型的根接口,定義了最基本的操做(增、刪、改、查、取得iterator、轉化爲數組等)。 java

1.List :保存一組元素。它能夠取得Collection的iterator,也能夠取得List特有的ListIterator.ListIterator是Iterator的子接口,它與Iterator類似,但提供了向前移動能力(Iterator只能向後移動)。List的retainAll方法用於與目的Collection取交集。 算法

ArrayList使用線性存儲結構(數據結構中叫線性表),它的隨機訪問速度較快(由於它的底層是數組,能夠經過數組的index直接找到元素),但插入或刪除數據的速度較慢. 數組

LinkedList使用鏈式存儲結構(數據結構中叫鏈表,sun jdk1.6中使用的是雙向鏈表),它的隨機訪問速度較慢(須要從第一個元素開始向下或向上遍歷,直到找到特定元素),但插入或刪除速度較快。另外LinkedList能夠直接實現queue或stack,由於它已經封裝了相應的方法。 安全

Vector與ArrayList類似,但它的操做是線程安全的,因此通常用於多線程狀況下。 數據結構

2.Set與List類似,但Set中的元素不能重複。HashSet經過使用哈希算法,查找速度較快(底層數據結構爲HashMap)。TreeSet保存的元素是通過排序的(底層數據結構爲紅黑樹)。LinkedHashSet使用哈希算法保證查找速度,它以元素的插入順序保存元素(底層數據結構爲LinkedHashMap)。 多線程

3.Queue 由於LinkedList已經實現了Queue行爲的方法,因此能夠將一個LinkedList轉化爲Queue: 工具

Queue<Integer> queue = new LinkedList<Integer>();

Queue是先進行出的,而PriorityQueue經過設置優先級以使須要的元素"先出". spa

4.Collections是Collection的工具類,定義的操做以下: 線程

(1)addAll:與Collection的addAll方法相同,但這個方法在大多數狀況下具備較快的速度。 code

(2)其餘方法沒什麼好說的了,若是須要請參看jdk文檔及源碼。

相關文章
相關標籤/搜索