深度剖析HashSet源代碼

HashSet 底層是用 HashMap 實現的

HashSet的構造方法

當使用 add 方法將對象添加到 Set 當中時, 實際上是將該對象作為底層所維護的 Map 對象的 key

HashSet的add()方法

而 value 則都是同一個 Object 對象(該對象我們用不上),因為 Map 的 value 對于 Set 來說沒有意義,Set 僅僅需要 key 的信息就夠了

一個假的值關聯到底層所維護的Map對象上

remove() 和 clear() 實際上是調用了 Map 的 remove() 和 clear() 方法,因為底層就是維護 Map,所以 Set 任何操作都是通過 Map 來實現的

HashSet的remove()和clear()方法

同理,iterator()、size()、isEmpty()等方法也都是通過 Map 來實現

HashSet的iterator()、size()、isEmpty()方法

(完)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • //Clojure入門教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語閱讀 3,777評論 0 7
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,778評論 18 399
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,525評論 0 3
  • 錯過了宋元,在尋找明清的路上,卻再次遇到了與之相反的北魏。
    vae許嵩閱讀 124評論 0 0