簡體   English   中英

ConcurrentHashMap中的keySet(V mappingValue)到底如何工作?

[英]How exactly keySet(V mappedValue) in ConcurrentHashMap works?

如何使用此方法? 這有什么用途? 通常,所有集合視圖(包括keySet())都不允許使用add和addAll方法-因為我不能在沒有相應值的情況下添加任何鍵。 抱歉,但我不了解API以及如何使用此方法。 有人可以舉一個清晰的例子嗎? 這是否意味着如果我將myNewKey添加到這樣的鍵集,那么(myNewKey,mapdValue)鍵值綁定將添加到相應的(原始)映射中?

公共ConcurrentHashMap.KeySetView keySet(VappedValue)

使用給定的公共映射值(對於任何添加項,即Collection.add(E)和Collection.addAll(Collection)),返回此映射中的鍵的Set視圖。 當然,僅當從該視圖對所有添加使用相同的值是可接受的時,這才是適當的。

通常,所有集合視圖(包括keySet())都不允許使用add和addAll方法- 因為我不能在沒有相應值的情況下添加任何鍵

這里不是這種情況。 將元素添加到keySet(V mappedValue)等效於放入Map中與值mappedValue關聯的新鍵。

如果我將myNewKey添加到這樣的鍵集,那么(myNewKey,mapdValue)鍵值綁定被添加到相應的(原始)映射?

沒錯

ConcurrentHashMap<String,String> map = new ConcurrentHashMap<>();
Set<String> keySet = map.keySet("sameValue");
keySet.add("key1");
keySet.add("key2");

將產生與以下相同的Map

ConcurrentHashMap<String,String> map = new ConcurrentHashMap<>();
map.put("key1","sameValue");
map.put("key2","sameValue");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM