我有HashMap的这个样子,如何更新HashMap中的键值?
HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();
我想在map
添加元素做之前,
- 要检查
key
是否存在与否,我可以用得到它map.containsKey()
。 - 如果密钥存在,我想检查相应密钥的
Set
的大小。 - 如果
size <= 1
我想在该集合中添加一个元素。
我有HashMap的这个样子,如何更新HashMap中的键值?
HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();
我想在map
添加元素做之前,
key
是否存在与否,我可以用得到它map.containsKey()
。Set
的大小。size <= 1
我想在该集合中添加一个元素。我不会使用containsKey并获取,因为这意味着当你只需要一个查找时就有两个查找。
private final Map<String,Set<String>> map = new HashMap<String,Set<String>>();
Set<String> set = map.get(key);
if(set != null && set.size() <= 1)
set.add(some$value);
与此唯一的问题是,该值将始终是null
除非你设置它的地方,所以你可能想要的是
private final Map<String,Set<String>> map = new HashMap<String,Set<String>>();
Set<String> set = map.get(key);
if(value != null)
map.put(key, set = new HashSet<String>());
if (set.size() <= 1)
set.add(some$value);
这是不寻常的有一组的最大大小2.这有什么理由吗?
我想为一个键只存储2个值...所以我设置了最大大小为2。 – Vinesh
听起来是这样的:
HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();
Set<String> value = map.get("key");
if(value != null) {
if(value.size() <= 1) {
value.add("some value");
}
} else {
map.put("key", new HashSet<String>());
}
现在,无论是最后一点不好的措辞(例如,你需要更新与该键关联的设置),或者你真的要更新的密钥本身,在哪种情况下你可能不得不删除它并添加一个新条目。
我知道OP要求它,但是如果value.size()与0进行比较会更有意义。但无论如何都有upvote;) –
@David格兰特:你的意思是'== 0'而不是'<= 1'? – Tudor
@Tudor:好吧,我是个白痴。 :) –
您可以使用map.get(String key)从地图获取集合。
然后测试Set的大小。如果需要,请添加您的元素。
现在你可以用map.remove(String key)直接从map中移除旧的set,并用put(String,Set)重新插入它;
'if(map.containsKey(“x”)){Set s = map.get(“x”);如果(s.size()<= 1){s.add(“y”);}}'(哦,只是误读密钥应该更新 - 为什么?!) –
为什么要更新密钥?你不能也不应该这样想 –