[英]Efficient way to subtract values in two HashMaps by key
我想知道當鍵匹配時如何有效地減去兩個映射的值。 目前,我有2個HashMap<String,Integer>
,它是這樣的:
for (String key: map1.keySet()){
if (map2.keySet().contains(key)){
//subtract
}
}
有更好的方法嗎?
從理論上講,這大約可以完成,除非您可以以某種比O(n)更快的方式找到兩個HashMap
之間的匹配鍵。
keySet()
-O(n)中的鍵
意識到這是一個舊線程,但是請從Google簽出番石榴
https://code.google.com/p/guava-libraries/wiki/CollectionUtilitiesExplained#Maps
您可以使用Map.difference,然后僅在左,右等位置獲取公共條目。
您是否考慮過使用Apache Commons Collections?
CollectionUtils.subtract( collection1, collection2 );
我認為沒有更好的方法, 除非您使用其他方法和/或不同的數據結構。 例如,您可以創建一個名為ValuePair
的類,該類可以包含(最多)兩個值,這些值表示您當前存儲在兩個不同映射中的值,但是您可以將所有對存儲在一個映射中,當涉及到“您可以在一組鍵中進行“減去”。 請注意,一對可能是不完整的,因此不會進行任何減法。
但這可能是過大的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.