1. 程式人生 > >Java中常用集合效率比較

Java中常用集合效率比較

一 List

List繼承collection,有序,元素可重複。

實現類:

ArrayList,陣列方式實現的,是執行緒不安全的;Vector 是執行緒安全的;LinkedList 是執行緒不安全的,底層是由連結串列實現的 。

ArrayList與LinkedList在效率上有些互補,LinkedList進行插入和刪除操作的速度是最快的,訪問較慢,ArrayList進行隨機訪問的速度很快,插入較慢;

二 Set

Set繼承collection,元素不能重複。

實現類:

HashSet,常用的set實現類,

LinkedHashSet,具有 HashSet 的查詢速度,且內部使用連結串列維護元素的順序 ( 插入的次序 ) 。於是在使用迭代器遍歷 Set 時,結果會按元素插入的次序顯示。

TreeSet,儲存次序的 Set, 底層為樹結構。

在插入、查詢方面,HashSet 通常優於TreeSet. hashSet查詢和刪除和增加元素的效率都非常高.

三 Map

鍵值對的形式

實現類:

HashMap,執行緒不安全,key和value都能為空

Hashtable,執行緒安全,key和value都不能為空

LinkedHashMap ,類似於 HashMap ,但是迭代遍歷它時,取得“鍵值對”的順序是其插入次序,只比 HashMap 慢一點。而在迭代訪問時發而更快。

四 迭代方式

1 傳統的for迴圈遍歷,基於計數器的:

        順序儲存:讀取效能比較高。適用於遍歷順序儲存集合。         鏈式儲存:時間複雜度太大,不適用於遍歷鏈式儲存的集合。 2.迭代器遍歷,Iterator:         順序儲存:如果不是太在意時間,推薦選擇此方式,畢竟程式碼更加簡潔,也防止了Off-By-One的問題。         鏈式儲存:意義就重大了,平均時間複雜度降為O(n),還是挺誘人的,所以推薦此種遍歷方式。

在使用時,根據自己的需求選擇合適的集合。