java.util源碼系列解讀之HashSet

Java中set集合接口: 用于存儲(chǔ)沒有重復(fù)元素(equals()和hashCode())的集合,可以存儲(chǔ)null元素.

下面詳細(xì)介紹HashSet
HashSet實(shí)現(xiàn)方式: 通過(guò)hash索引的方式來(lái)存儲(chǔ)和取值,內(nèi)部通過(guò)維護(hù)一個(gè)HashMap來(lái)實(shí)現(xiàn)的,我們知道HashMap的key是唯一的不能重復(fù)的,并且也是通過(guò)hash方式來(lái)索引的, 這一點(diǎn)特性恰好是跟HashSet不謀而合,所以HashSet是直接通過(guò)HashMap來(lái)實(shí)現(xiàn)的.他的所有操作都是間接調(diào)用的HashMap方法來(lái)實(shí)現(xiàn)的

類定義

public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable

成員變量

修飾符 變量名 作用
private transient HashMap<E,Object> map 內(nèi)部維護(hù)的map
private static final Object PRESENT = new Object() 存放在map中的值對(duì)象,做占位而已

構(gòu)造方法

public HashSet() {
    map = new HashMap<>();
}

public HashSet(int initialCapacity) {
    map = new HashMap<>(initialCapacity);
}

方法

只列舉幾個(gè)方法, 他的具體實(shí)現(xiàn)請(qǐng)參考HashMap講解

public Iterator<E> iterator() {
    return map.keySet().iterator();
}

public int size() {
    return map.size();
}

public boolean contains(Object o) {
    return map.containsKey(o);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對(duì)于byte類型而言...
    龍貓小爺閱讀 4,467評(píng)論 0 16
  • 實(shí)際上,HashSet 和 HashMap 之間有很多相似之處,對(duì)于 HashSet 而言,系統(tǒng)采用 Hash 算...
    曹振華閱讀 2,563評(píng)論 1 37
  • HashMap 是 Java 面試必考的知識(shí)點(diǎn),面試官?gòu)倪@個(gè)小知識(shí)點(diǎn)就可以了解我們對(duì) Java 基礎(chǔ)的掌握程度。網(wǎng)...
    野狗子嗷嗷嗷閱讀 6,815評(píng)論 9 107
  • java筆記第一天 == 和 equals ==比較的比較的是兩個(gè)變量的值是否相等,對(duì)于引用型變量表示的是兩個(gè)變量...
    jmychou閱讀 1,658評(píng)論 0 3
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,806評(píng)論 18 399

友情鏈接更多精彩內(nèi)容