我有这样的HashMap,
HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();
我正在尝试在添加元素之前map
做
- 想检查是否
key
存在,我可以使用map.containsKey()
. - 如果密钥存在,我想检查
Set
相应密钥的大小。 - 如果
size <= 1
我想在该集合中添加一个元素。
我有这样的HashMap,
HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();
我正在尝试在添加元素之前map
做
key
存在,我可以使用map.containsKey()
.Set
相应密钥的大小。size <= 1
我想在该集合中添加一个元素。听起来像这样:
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>());
}
现在,要么最后一点措辞不当(即你想更新与键关联的集合),要么你真的想更新键本身,在这种情况下你可能只需要删除它并添加一个新条目。
我不会使用 containsKey 和 get ,因为这意味着当您只需要一个时会进行两次查找。
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 的集合是不寻常的。这有什么原因吗?
您可以使用 map.get(String key) 从地图中获取集合。
然后测试Set的大小。如果需要,添加您的元素。
现在您可以简单地使用 map.remove(String key) 从地图中删除旧集,然后使用 put(String, Set); 重新插入它。