1. 程式人生 > >Java 基礎 集合框架

Java 基礎 集合框架

con tar java集合 ava 復雜 www div 哈希表 clas

  Java中的集合從類的繼承和接口的實現結構來說,可以分為兩大類:

  1 繼承自Collection接口,包含List、Set和Queue等接口和實現類。

  2 繼承自Map接口,主要包含哈希表相關的集合類。

  第一類

  Collection接口繼承和實現結構圖如下:

技術分享圖片

  圖中的綠色的虛線代表實現,綠色實線代表接口之間的繼承,藍色實線代表類之間的繼承,下同。

  List

  常用的是ArrayList和LinkedList。ArrayList通過數組實現,隨機訪問比較快,增刪操作比較慢。而LinkedList通過鏈表實現,增刪操作比較快,隨機訪問比較慢。兩者都是非線程安全的。

  Queue

  LinkedList實現了Deque接口,所以LinkedList具有雙端隊列的功能。PriorityQueue內部數據結構是堆,每次出隊列的元素總是當前隊列中最大值(大頂堆)或是最小值(小頂堆)。

  Set

  Set與List的主要區別是Set不允許元素重復,而List允許元素重復。HashSet和LinkedHashSet的區別在於後者保證元素插入集合的元素順序與輸出順序保持一致。而它們與TreeSet的區別在於TreeSet按照Comparator進行排序,默認情況下按照字符的自然順序升序排列。

  

  第二類

  Map接口繼承和實現結構圖如下:

技術分享圖片

  Map類型的集合最大的優點在於其查找效率比較高,理想情況下可以實現O(1)的時間復雜度。Map中最常用的是HashMap。LinkedHashMap與HashMap的區別在於前者能夠保證插入集合的元素順序與輸出順序一致。這兩者與TreeMap的區別在於TreeMap根據鍵值進行排序,底層的實現也有本質的區別,如HashMap底層是一個哈希表,而TreeMap的底層是一棵樹。在多線程環境下,通常使用ConcurrentHashMap,因為Hashtable效率比較低。

  參考資料

  Java集合之整體結構

Java 基礎 集合框架