HashSet原始碼解析 JDK1 8

2021-08-19 17:22:22 字數 846 閱讀 5174

在我們學過hashmap之後,再來看hashset就很easy了。因為hashset是基於hashmap是實現的。

開啟hashset的原始碼,可以看到維護了乙個hashmap

一、成員變數

//

用來儲存

hashset

的元素private transient hashmap,object> map;

//這個

object

是用來填充

hashmap

的value

的。private static final object present = new object();

二、構造方法

public 

hashset()

可以看到,預設構造就是將成員變數的hashmap例項化。

三、方法

public int 

size()

size就是hashmap的size。

public boolean 

contains(object o)

因為hashset只使用了hashmap的鍵,所以使用hashmap的containskey方法

public boolean 

add(e e)

新增時,只需要將要新增的元素和剛才的填補value的object物件新增到hashmap中

public boolean 

remove(object o)

移除使用hashmap的remove方法

是不是很簡單。只要你知道hashset維護了乙個hashmap,然後hashset的操作就是你所熟悉的hashmap對鍵的操作。

JDK原始碼之HashSet

1.定義 hashset繼承abstractset類,實現set,cloneable,serializable介面。set 介面是一種不包括重複元素的 collection,它維持它自己的內部排序,所以隨機訪問沒有任何意義。public class hashsetextends abstractse...

JDK14 0 1 HashSet原始碼總結

目錄 1.概述 2.屬性 3.構造方法 4.相關操作 4.1新增元素 4.2移除元素 4.3遍歷 判空 包含 5.轉殖機制 淺拷貝 6.序列化機制 7.去重機制 此類實現set介面,該介面由雜湊表 實際上是hashmap例項 支援。其依靠hashmap的key不可重複,來保證將來加入到hashset...

JDK原始碼解析 ThreadLocal

說明 本文是jdk 1.8版本 1.簡介 threadlocal 又叫做執行緒本地變數,也被稱為執行緒本地儲存。threadlocal 為 變數 在每乙個執行緒中建立 乙個 副本 不是原來變數的引用 每乙個執行緒都會獨自擁有變數副本,而不會相互影響。2.實現方式 1 set 方法,因為執行緒thre...