HashSet 概述

對(duì)于 HashSet 而言,它是基于 HashMap 實(shí)現(xiàn)的,底層采用 HashMap 來(lái)保存元素,所以如果對(duì) HashMap 比較熟悉了,那么學(xué)習(xí) HashSet 也是很輕松的。

我們先通過(guò) HashSet 最簡(jiǎn)單的構(gòu)造函數(shù)和幾個(gè)成員變量來(lái)看一下,證明咱們上邊說(shuō)的,其底層是 HashMap:

萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

private transient HashMap<E,Object> map;    // Dummy value to associate with an Object in the backing Map
    private static final Object PRESENT = new Object();    /**
     * 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<>();
    }

萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

其實(shí)在英文注釋中已經(jīng)說(shuō)的比較明確了。首先有一個(gè)HashMap的成員變量,我們?cè)?HashSet 的構(gòu)造函數(shù)中將其初始化,默認(rèn)情況下采用的是 initial capacity為16,load factor 為 0.75。

HashSet 的實(shí)現(xiàn)

對(duì)于 HashSet 而言,它是基于 HashMap 實(shí)現(xiàn)的,HashSet 底層使用 HashMap 來(lái)保存所有元素,因此 HashSet 的實(shí)現(xiàn)比較簡(jiǎn)單,相關(guān) HashSet 的操作,基本上都是直接調(diào)用底層 HashMap 的相關(guān)方法來(lái)完成,我們應(yīng)該為保存到 HashSet 中的對(duì)象覆蓋 hashCode() 和 equals()

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式