HashSet 概述

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

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

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(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<>();
    }

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

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

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

對于 HashSet 而言,它是基于 HashMap 實(shí)現(xiàn)的,HashSet 底層使用 HashMap 來保存所有元素,因此 HashSet 的實(shí)現(xiàn)比較簡單,相關(guān) HashSet 的操作,基本上都是直接調(diào)用底層 HashMap 的相關(guān)方法來完成,我們應(yīng)該為保存到 HashSet 中的對象覆蓋 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),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式