HashSet 概述

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

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

萬碼學(xué)堂,電腦培訓(xùn),計算機(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ī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

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

HashSet 的實現(xiàn)

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

網(wǎng)友評論