java插入Map <String,Set <String >>

Dmi*_*lev -2 java hashmap set

在C++中我可以做到:

map<string, set<string>> v; 
v["AHA"].insert("BA");
Run Code Online (Sandbox Code Playgroud)

在java我有:

 HashMap<String, Set<String>> v = new HashMap<String, Set<String>>();
Run Code Online (Sandbox Code Playgroud)

我如何将"BA"作为c ++插入v ["AHA"]?

是的我试试这个:

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

但是很大

khe*_*ood 6

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

v.computeIfAbsent("AHA", k -> new HashSet<String>()).add("BA")
Run Code Online (Sandbox Code Playgroud)

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

如果您在Java 8之前使用的是Java版本,那么代码更多一些:

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