在我們學過hashmap之後,再來看hashset就很easy了。因為hashset是基於hashmap是實現的。
開啟hashset的原始碼,可以看到維護了乙個hashmap
一、成員變數
//二、構造方法用來儲存
hashset
的元素private transient hashmap,object> map;
//這個
object
是用來填充
hashmap
的value
的。private static final object present = new object();
public可以看到,預設構造就是將成員變數的hashmap例項化。hashset()
三、方法
public intsize就是hashmap的size。size()
public boolean因為hashset只使用了hashmap的鍵,所以使用hashmap的containskey方法contains(object o)
public boolean新增時,只需要將要新增的元素和剛才的填補value的object物件新增到hashmap中add(e e)
public boolean移除使用hashmap的remove方法remove(object o)
是不是很簡單。只要你知道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...