我有一张像[key1:25, key2:20, key3:-30, key4:10, key5:-5]
这样的地图(键/值对)。现在,我需要消除金额为负数的所有条目,并从其他条目中扣除这些金额:
所以这是一张有效的地图:[key1:20, key2:0, key4:0]
那么,是否有更好的解决方案,然后迭代整个地图并对每个负数量的正数进行求和。
最后,我还需要删除金额为0的条目..但是没关系,我可以遍历完整的地图一次并删除0的那些
答案 0 :(得分:4)
简答:不。 鉴于地图上有无限制,没有比蛮力更好的方法了。 即使您寻找特定于语言的技巧,幕后,也应使用详尽搜索。
请注意,在地图上骑行是在 O(n)中,因此,即使您要对其进行排序或将地图转换为类似TreeMap
的内容,也需要更多为O(n)强>
答案 1 :(得分:0)
我看到你的问题的方式你必须将它们全部添加并将结果放在地图中。你也不需要将它保存到同一个地图上。
Map<String, Integer> outputMap = new HashMap<String, Integer>();
int output = 0;
for(Integer valinMap: inputMap) {
output += valinMap;
}
outputMap.put("key1", output);
如果您的要求不同,请提及。