第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 PRESENT 是 HashSet 中 add 方法中 map.put(e,PRESENT)

為什么 PRESENT 是 HashSet 中 add 方法中 map.put(e,PRESENT)

蝴蝶刀刀 2023-03-09 14:22:49
當我們打電話HashSet set = new HashSet(); set.add(1);該add方法將在內(nèi)部調(diào)用put帶有 value 的 map 方法 map.put(1,PRESENT);。為什么PRESENT在中作為虛擬值傳遞map.put?
查看完整描述

3 回答

?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

從概念上講,Map 代表 Set 的超集:它包含 Set 的所有鍵。

因此,很可能通過重新使用 Map 來實現(xiàn) Set。但是 Map 當然需要一個鍵加上一個值。

因此:當您決定通過重新使用 Map 來實現(xiàn) Set 時,向 set 添加一個鍵會導致向該 map 添加一個鍵和一個虛擬值。使用非空值很有用,這樣您可以稍后決定刪除特定鍵是否真的刪除了任何內(nèi)容。


查看完整回答
反對 回復 2023-03-09
?
嗶嗶one

TA貢獻1854條經(jīng)驗 獲得超8個贊

如果您檢查 a 的實例化HashSet

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

它表示為 a hashmap,您添加到集合中的值被添加keys到具有虛擬對象值的映射中,這就是HashSet避免重復的方法


查看完整回答
反對 回復 2023-03-09
?
泛舟湖上清波郎朗

TA貢獻1818條經(jīng)驗 獲得超3個贊

因為在 的實現(xiàn)中HashSet,aMap用于記住集合包含哪些值?;蛘?,換句話說,存在哪個。

因此,為了存儲的值,每個值都作為鍵Set放入。Map由于鍵后面的值無關(guān)緊要,因此使用了一個虛擬值。為了最小化內(nèi)存占用,該虛擬值非常簡單且很?。?/p>

private static final Object PRESENT = new Object(); //from HashSet's sourcecode


查看完整回答
反對 回復 2023-03-09
  • 3 回答
  • 0 關(guān)注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號