![](/img/trans.png)
[英]Java: ArrayList for List, HashMap for Map, and HashSet for Set?
[英]Java map values of List into a Hashmap
我有一个HashMap:
K1, false
K2, false
K3, false
...
K1000, false
最初,所有键的值均为false。
我有一个ArrayList:
K3, K10, K33,..., K417, K834, K998
我需要获取列表的值,并在Hashmap中将相应键仅将这些值标记为“ true”。 现在我知道我们可以做到这一点:
Iterate HashMap:
Iterate List:
if HashMap.contains(List[i])
HashMap.put(List[i], true)
但是我们在这种逻辑中使用了2次迭代,也许对于1000个键来说这不是什么大问题,但是如果我想将其扩展到一百万个键,那么有什么有效的算法可以用来实现上述目标?
谢谢。
您不需要显式地迭代HashMap
。 hashMap.containsKey(key)
检查hashMap.containsKey(key)
是否以优化方式存在于地图中。 您需要研究一下HashMap的工作方式。
Iterate List:
if HashMap.containsKey(List[i])
HashMap.put(List[i], true)
这将起作用。
使用Map.replace()
:
for (E element : list) {
map.replace(element, true);
}
这只会更新list
具有匹配元素的现有键。
附带说明一下, Map<K, Boolean>
通常可以用较轻的Set<K>
代替。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.