Java 集合總結(Collection系列與Map系列)

前言

原文在: 點這裏,這也是做者的我的網站,但願多多支持,O(∩_∩)O~git

對於做者而言,Java 集合主要分爲兩個派系,一個是 Collection 系列,一個是 Map 系列。github

Collection 系列

以下圖所示:數組

collection

那麼對於他們的特色,簡單來講能夠歸納爲:安全

  1. Collection:它是一個根接口,JDK沒有它的實現類,內部僅僅作 add(),remove(),contains(),size() 等方法的聲明。網站

  2. List:它繼承於 Collection,增長了能夠對每一個元素插入的位置進行精確的控制的方法,另外,插入的值容許爲空,也容許有重複的值。spa

實現類 實現方式 是否同步 是否支持插入空值 元素是否支持重複
ArrayList 數組 不一樣步 支持 支持
Vector 數組 同步 支持 支持
LinkedList 鏈表 不一樣步 支持 支持

那麼對於每個類(接口)的細節,能夠看:線程

Map

map

那麼對於他們的特色,簡單來講能夠歸納爲:繼承

  1. HashMap:最經常使用的 Map,非同步,不保證順序。容許有空值和空鍵。 採用鏈表法解決哈希衝突,而且在發生哈希衝突的時候,新的 Node 會加入到鏈表的最下端;在 JDK8 中哈希衝突過多的狀況下鏈表會變成紅黑樹從而保證效率;接口

  2. LinkedHashMap:繼承HashMap,Iterator下 能保證插入的前後順序,原理是在LinkedHashMap中加入了鏈表,而且該鏈表仍是一個雙向鏈表。

  3. TreeMap:可以根據 key 值來有序插入 (也就是鍵值對會根據key排序好),原理使用了紅黑樹,每次插入都會對樹進行調整。

  4. HashTable:HashMap的線程安全版本,內部的實現幾乎和 HashMap 如出一轍。可是因爲其同步是使用了 synchronized,效率較低。

  5. ConcurrentHashMap:也是HashMap的線程安全版本,而且使用了分段加鎖機制,因此效率上要比HashTable要好不少。

那麼對於每個類(接口)的細節,能夠看:

最後

做者也是一名Java新手,上述有些是基於本身的理解做出的總結,有些是轉載別人的文章,若是有什麼錯誤的地方,還麻煩各位斧正,因爲沒作評論的功能,因此暫時 github issue 地址:點這裏

相關文章
相關標籤/搜索