6

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

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

我想很快将布尔值全部替换为真的。我怎么能做到这一点?

4

2 回答 2

11

最快的方法是这样的:

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

这段代码避免了任何查找,因为它遍历整个地图的条目并直接设置它们的值。

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


Java 8 更新:

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

selectedIds.replaceAll((k, v) -> true);
于 2012-05-24T14:20:28.470 回答
5

这将遍历您的地图并将所有旧值替换为每个键的真实值。HashMap put 方法

for(String s : selectedIds.keySet()) {
    selectedIds.put(s, true);
 }
于 2012-05-24T14:16:04.860 回答