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