改进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;
    }  
}
WJS

当密钥A和密钥B的名称相同时,它们的哈希码不一定相等。

那不是一个好主意。任何充当键的类都应覆盖equals和hashCode。同时使该类不可变也是一个好主意(否则您可能会遇到一些困难的调试工作)。

完成后,您就可以


   Map<Indentifer, Object> map...;
   Object value = map.get(id);

   // or as of Java 8+

   Object value = map.getorDefault(id, someDefaultValue);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章