如何用布尔值有效地替换Java HashMap

时间:2012-05-24 14:13:56

标签: java initialization hashmap

我很感兴趣如何快速将布尔值更改为此hashmap:

HashMap<String, Boolean> selectedIds = new HashMap<>(); 

我非常希望将布尔值全部替换为true。我怎么能这样做?

2 个答案:

答案 0 :(得分:11)

最快的方式是:

for (Map.Entry<String, Boolean> entry : selectedIds.entrySet()) {
    entry.setValue(true);
}

此代码可以避免任何查找,因为它会迭代整个地图的条目并直接设置它们的值。

请注意,只要调用HashMap.put(),就会在内部Hashtable中进行键查找。虽然代码是高度优化的,但仍需要计算和比较哈希码的工作,然后使用算法最终找到条目(如果存在)。这都是“工作”,并消耗CPU周期。


Java 8更新:

Java 8为此目的引入了一种新方法replaceAll(),使得所需代码更加简单:

selectedIds.replaceAll((k, v) -> true);

答案 1 :(得分:5)

这将迭代您的地图并将每个键的所有旧值替换为true值。 HashMap put method

for(String s : selectedIds.keySet()) {
    selectedIds.put(s, true);
 }