2011-03-24 41 views
1

如何在HashMap上執行設置操作,如Collections.addAll()在地圖上設置操作

+3

這些值是什麼? – 2011-03-24 20:57:57

+0

要添加的值將是一個字符串數組。 – 2011-03-24 21:01:29

+0

...那麼鑰匙是什麼?你能詳細談談你正在努力完成什麼嗎? – 2011-03-24 21:02:59

回答

3

根據您對所提問題的評論,我認爲您真正需要的是一個不是地圖。

嘗試

Set<String> mySet = new HashSet<String>(); 
mySet.addAll(...); 

使用mySet.contains("someString");對於快速確定是否存在一個值。它應該等同於你似乎試圖做的事情。

2

通過例如Map.putAll

您也可以直接在可通過Map.entrySet獲得的一組地圖條目上進行設置操作。

the documentation

返回包含在此映射中的映射關係的Set視圖。 該集合由地圖支持,因此對地圖的更改將反映在集合中,反之亦然。

+0

但是,正如您引用的文檔所說,「entrySet」和「keySet」都不支持「add」或「addAll」。 – 2011-03-24 21:01:16

+0

哦,好點。我對此一無所知。 – aioobe 2011-03-24 22:07:27

1

這樣:

hashMap.putAll(map); 

documentation

複製所有映射從 指定映射到此映射,這些 映射關係將替換任何映射 這地圖對於當前在指定地圖中的任何鍵 都具有。

1

你可以操作,比如

Map<String, String> map = new HashMap<String, String>(); 
Set<String> set = map.keySet(); 
for(String s: set); 
set.retainAll(set2); // keeps the keys in set2 
set.removeAll(set3); // removes the keys in set3 
set.remove(s); 

你也可以把地圖的設置。沒有ConcurrentHashSet,但你可以做

Set<String> set = Collections.setFromMap(new ConcurrentHashMap<String, Boolean>());