gpt4 book ai didi

java - Java HashMap中equals的作用

转载 作者:行者123 更新时间:2023-12-03 05:45:50 26 4
gpt4 key购买 nike

我对使用 equals 时的 HashMap 性能有疑问。当我首先进行空检查时,如下所示:

public boolean equals(final Object obj) {
// object must be Test at this point
if (obj == null) {
return false;
}
}

如果我不这样做的话,速度会快一点。

因此,要创建 HashMap - 我只是想知道 - 与 HashMap 中的元素相比,什么类型的元素。当我放置、插入或获取时,我从不插入任何 null 对象。

谢谢!

最佳答案

我真的不会担心单个 if 语句的成本 - 这是一种微观优化,除非您有记录证明它是程序中的瓶颈,否则您绝对不应该担心它。几乎普遍来说,程序速度减慢是由于大规模的效率低下,而不是单个 if 语句。

话虽如此 - 存储在 HashMap 中的对象然而可以比较HashMap想要比较它们。这通常在插入、删除和查找期间完成,以便HashMap知道两个对象是否相等,但也可以在重新哈希期间完成(因为对象通过 HashMap 重新分配)。该实现甚至可能尝试将您的对象与 null 进行比较然后进行某种疯狂的激进缓存或合并方案以提高内存使用率。你真的不能假设太多,因为 HashMap 契约(Contract)的一部分是equals必须适用于您的对象。

此外,如果您不支持nullequals ,那么你就是breaking the contract for equals as specified in Object ,其中明确提到传入 null应该返回false 。如前所述,这几乎肯定是一个非常糟糕的想法,除非您有可验证的数据表明它是一个瓶颈。

希望这有帮助!

关于java - Java HashMap中equals的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14433398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com