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

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

為什么沒有針對ConcurrentHashMap的ConcurrentHashSet

為什么沒有針對ConcurrentHashMap的ConcurrentHashSet

慕哥6287543 2019-11-21 14:29:47
HashSet基于HashMap。如果我們看一下HashSet<E>實現(xiàn),則所有內(nèi)容都在下管理HashMap<E,Object>。<E>用作的鍵HashMap。而且我們知道這HashMap不是線程安全的。這就是為什么我們使用ConcurrentHashMapJava?;诖耍腋械嚼Щ蟮氖?,為什么我們沒有應(yīng)該基于的ConcurrentHashSet ConcurrentHashMap?還有什么我想念的嗎?我需要Set在多線程環(huán)境中使用。另外,如果我想創(chuàng)建自己的作品,是否ConcurrentHashSet可以通過僅替換HashMapto ConcurrentHashMap并將其余內(nèi)容保持不變來實現(xiàn)?
查看完整描述

3 回答

?
慕村9548890

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

沒有內(nèi)置類型,ConcurrentHashSet因為您總是可以從地圖中導(dǎo)出集合。由于地圖的類型很多,因此您可以使用一種方法從給定的地圖(或地圖類)生成一個集合。


在Java 8之前,您可以通過使用生成由并發(fā)哈希圖支持的并發(fā)哈希集。 Collections.newSetFromMap(map)


在Java 8(由@馬特指出的),你可以得到一個并發(fā)的哈希集合視圖通過ConcurrentHashMap.newKeySet()。這比舊版本newSetFromMap要簡單一些,舊版本要求您傳入一個空的地圖對象。但這是特定于ConcurrentHashMap。


無論如何,Java設(shè)計人員每次創(chuàng)建新的地圖接口時都可以創(chuàng)建一個新的set接口,但是當(dāng)?shù)谌絼?chuàng)建自己的地圖時,該模式將無法實施。最好有靜態(tài)方法來派生新的集合。即使您創(chuàng)建自己的地圖實現(xiàn),該方法也始終有效。


查看完整回答
反對 回復(fù) 2019-11-21
?
滄海一幻覺

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

Set<String> mySet = Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>());


查看完整回答
反對 回復(fù) 2019-11-21
  • 3 回答
  • 0 關(guān)注
  • 1817 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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