天天看點

源碼之HashSet

分析:

HashSet底層是HashMap實作的,你看最後一個構造函數就會很奇怪,這dummy的參數幹啥的 ,啥也沒用。不過這個看說明就知道了,隻是為了實作構造函數的重載,跟其他差別開來的(如果不明白有必要看下重載内容)。

這就很簡單可以知道了,就是将E作為HashMap的key,所有的key都指向PRESENT對象,因為我們都知道,key是不允許重複的,而value可以。

另外這裡沒有HashMap的那種get方法去擷取key的,隻能通過疊代器去便利裡面的值。

總結:

1.它不是線程安全的

2.它是由HashMap實作的

3.通過map.put(key,PRESENT)方式把所有key指向同一個對象

4.通路隻能通過疊代器通路。

繼續閱讀