equals在Java的HashMap中的作用

use*_*737 2 java null hashmap data-structures

我对HashMap有关使用的表现有疑问equals.当我首先进行空检查时,如下所示:

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

如果我没有,那会快一点.

因此,创建HashMap- 我只是想知道 - 与元素中的元素相比有哪些元素HashMap.当我插入或插入时,我从不插入任何null物体.

谢谢!

tem*_*def 5

我真的不会担心单个if语句的成本 - 这是一个微优化,除非你有证据表明它是你程序的瓶颈,否则你绝对不应该担心它.几乎普遍地,计划的放缓是由于较大规模的低效率而不是个别的陈述.

有了这个 - HashMap可以比较存储在a中的对象,但是HashMap想要比较它们.这通常在插入,删除和查找期间完成,以便HashMap知道两个对象是否相等,但是也可以在重新散列期间完成(因为对象通过其重新分配HashMap).实现甚至可能尝试比较您的对象null,然后进行某种疯狂的积极缓存或合并方案,以提高内存使用率.你真的不能承担太大,因为合同的一部分,HashMapequals必须为你的对象.

此外,如果你不支持nullequals,那么你就打破了合同equals的规定中Object,其中明确提到,传递null应返回false.如前所述,除非您有可验证的数据表明它是一个瓶颈,否则这几乎肯定是一个非常糟糕的想法.

希望这可以帮助!