java插入Map <string,set <string =“”>&gt;

时间:2017-03-28 10:33:47

标签: java hashmap set

在C ++中,我可以这样做:

map<string, set<string>> v; 
v["AHA"].insert("BA");

在java中我有:

 HashMap<String, Set<String>> v = new HashMap<String, Set<String>>();

我如何插入&#34; BA&#34; v [&#34; AHA&#34;]和c ++一样?

是的,我试试这个:

Set<String> vs = V.get("B");
if (vs == null) vs = new HashSet<String>();
vs.add("V");
V.put("B", vs);

但很大

2 个答案:

答案 0 :(得分:5)

如果您想在集合中添加内容,并允许键/值对可能尚未存在于地图中,您可以使用computeIfAbsent

v.computeIfAbsent("AHA", k -> new HashSet<String>()).add("BA")

这将在地图中查找该键,如果缺少该键,则使用新的空集作为值添加它,这样您就可以直接在其中添加内容。

如果您在Java 8之前使用的是Java版本,则需要更多代码:

Set<String> s = v.get("AHA");
if (s==null) {
    s = new HashSet<String>();
    v.put("AHA", s);
}
s.add("BA");

答案 1 :(得分:0)

HashMap<String, Set<String>> v = new HashMap<String, Set<String>>();
Set<String> set = new HashSet<String>();
set.add("some data");
v.put("AHA",set);  

首先创建一个Set,然后将其存储在Map中。