繁体   English   中英

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

[英]How to effectively replace Java HashMap with boolean values

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

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

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

最快的方法是:

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);

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM