在我的Android项目中,我有一种方法使缓存无效(HashMap<Integer, Boolean>
)。
我目前正在使用哈希图与第三方代码兼容。
我在这里找到了一个很好的答案,但它需要切换到三核。给定的解决方案是:
treeMap.tailMap(key).clear();
Treemap解决方案比我在hashmap上的努力要好得多:
//where hashMap is a copied instance for the method
for (Integer key : hashMap.keySet()) {
if (key > minPosition) {
hashMap.remove(key);
}
}
是否有更好的时间/复杂解决方案在哈希图中进行此操作,类似于Treemap解决方案?
如果您需要使用HashMap
,则没有比迭代条目集更好(更有效)的解决方案,并且一次删除条目。这将是O(n)操作。您需要访问/测试地图中的所有条目。
正如您正确观察到的那样,您可以从TreeMap
更整齐,更有效地删除条目。这将是O(logN)
操作。但不利的一面是插入和删除是O(logN)
而不是O(1)
。
LinkedHashMap
可以在某些用例中提供帮助,但在此用例中无济于事。(它根据插入的顺序订购条目,而不是基于键的值。)