首页 > 解决方案 > 通过Hashmap改进循环中的if语句

问题描述

我创建了一个循环,它通过我的HashMap. 然后我检查当前键的名称 (A) 是否等于可能添加的键 (B)。密钥 A 和密钥 B 的哈希码在名称相同时不一定相等。因此,我通过将它们转换为字符串(覆盖 .equals())来检查它们是否相等。该代码正在运行,但大多数情况下都有一种更清洁、更简单的方法来执行此操作。

这是我当前的代码:

for (HashMap.Entry<Identifier, SetInterface<BigInteger>> entry : idAndSet.entrySet()) {
    if (entry.getKey().isEqual(identifier)) {
        factor = entry.getValue();
        return factor;
    }  
}

标签: javafor-loopif-statementhashmapkey

解决方案


您可能会滥用该Map.computeIfPresent方法。

factor = map.computeIfPresent(identifier, (k,v) -> v);
return factor;

该方法返回与指定键关联的值,如果没有则返回 null


推荐阅读