1. 程式人生 > >Java容器概覽

Java容器概覽

容器主要包括 Collection 和 Map 兩種,Collection 儲存著物件的集合,而 Map 儲存著鍵值對(兩個物件)的對映表。

Collection

1. Set

  • TreeSet:基於紅黑樹實現,支援有序性操作,例如根據一個範圍查詢元素的操作。但是查詢效率不如 HashSet,HashSet 查詢的時間複雜度為 O(1),TreeSet 則為 O(logN)。

  • HashSet:基於雜湊表實現,支援快速查詢,但不支援有序性操作。並且失去了元素的插入順序資訊,也就是說使用 Iterator 遍歷 HashSet 得到的結果是不確定的。

  • LinkedHashSet:具有 HashSet 的查詢效率,且內部使用雙向連結串列維護元素的插入順序。

2. List

  • ArrayList:基於動態陣列實現,支援隨機訪問。

  • Vector:和 ArrayList 類似,但它是執行緒安全的。

  • LinkedList:基於雙向連結串列實現,只能順序訪問,但是可以快速地在連結串列中間插入和刪除元素。不僅如此,LinkedList 還可以用作棧、佇列和雙向佇列。

3. Queue

  • LinkedList:可以用它來實現雙向佇列。

  • PriorityQueue:基於堆結構實現,可以用它來實現優先佇列。

Map

  • TreeMap:基於紅黑樹實現。

  • HashMap:基於雜湊表實現。

  • HashTable:和 HashMap 類似,但它是執行緒安全的,這意味著同一時刻多個執行緒可以同時寫入 HashTable 並且不會導致資料不一致。它是遺留類,不應該去使用它。現在可以使用 ConcurrentHashMap 來支援執行緒安全,並且 ConcurrentHashMap 的效率會更高,因為 ConcurrentHashMap 引入了分段鎖。

  • LinkedHashMap:使用雙向連結串列來維護元素的順序,順序為插入順序或者最近最少使用(LRU)順序。