3 回答

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),該方法也始終有效。

TA貢獻1824條經(jīng)驗 獲得超5個贊
Set<String> mySet = Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>());
添加回答
舉報