jdk-HashSet
因為最近去看了下jdk1.8的HashMap,因此我又順便去學些了下HashSet,平時用的也比較多。
用法:當需要儲存不能重複的元素時用到的。
翻看原始碼:(有點驚訝)
建構函式:
/**
* Constructs a new, empty set; the backing <tt>HashMap</tt> instance has
* default initial capacity (16) and load factor (0.75).
*/
public HashSet() {
map = new HashMap<>();
}
噹噹,建構函式裡面使用的是HashMap,也就是說它利用了HashMap的特性來解決它所想解決的問題。
add方法:
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
我們需要新增的資料是e,但是HashSet內,構造了一個鍵值對<e,new Object>來插入到HashMap中,我們知道對於HashMap來說,新插入的資料只會返回null,而已存在的鍵值對,會返回舊值。因此如果add返回true,說明之前沒有插入過類似的值,如果返回false,意味著之前存在值。
remove方法:
public boolean remove(Object o) {
return map.remove(o)==PRESENT;
}
以上是基於jdk1.7的程式碼。1.8程式碼也沒啥區別,不看了,偷個懶。這一篇有點瞎,但是還是記錄下來吧。