繁体   English   中英

List的Java映射值到Hashmap中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM