一圖勝千言!
從容器類圖中可以發現,數據容器主要分爲了兩類:
Collection: 存放獨立元素的序列。
Map:存放key-value型的元素對。(這對於一些需要利用key查找value的程序十分的重要!)
在使用時,應該根據不同的適用場景靈活的進行選擇!
Map
-HashMap 提供了key-value的鍵值對數據存儲機制,可以十分方便的通過鍵值查找相應的元素,
而且通過Hash散列機制,查找十分的方便。不支持線程的同步.
-LinkedHashmap 保存了記錄的插入順序,在用Iteraor遍歷LinkedHashMap時,
先得到的記錄肯定是先插入的。在遍歷的時候會比HashMap慢。有HashMap的全部特性。
-TreeMap 能夠把它保存的記錄根據鍵排序,默認是按升序排序,也可以指定排序的比較器。
當用Iteraor遍歷TreeMap時,得到的記錄是排過序的。TreeMap的鍵和值都不能爲空。
-ConcurrentHashMap 支持線程的同步。
Collection
-List(有序列表)
-LinkedList 其數據結構採用的是鏈表,此種結構的優勢是刪除和添加的效率很高,
但隨機訪問元素時效率較ArrayList類低。
-ArrayList 其數據結構採用的是線性表,此種結構的優勢是訪問和查詢十分方便,
但添加和刪除的時候效率很低。
-Set(無序且唯一)
-HashSet HashSet利用Hash函數進行了查詢效率上的優化,其contain()方法經常被使用,
以用於判斷相關元素是否已經被添加過。
-LinkedHashSet 介於HashSet和TreeSet之間。它也是一個hash表,但是同時維護了一個雙鏈表
來記錄插入的順序。保證輸入和輸出的順序,該順序恆久不變。
-TreeSet 採用樹結構實現(紅黑樹算法)。元素是按順序進行排列。TreeSet支持兩種排序方式,
自然排序 和定製排序,其中自然排序爲默認的排序方式。
Queue(隊列)
-LinkedList 同上
-PriorityQueue 本質上就是堆排序裏面建的最小堆。對入隊的元素進行排序,
所以在隊列頂端的總是最小的元素。