在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);
但很大
答案 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中。