相等在Java的HashMap中的作用 - java

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

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

如果没有的话,会更快一些。

因此,要创建HashMap-我只是想知道-与HashMap中的元素相比,是哪种元素。当我放置,插入或获取时,我永远不会插入任何null对象。

谢谢!

java大神给出的解决方案

我不会担心单个if语句的成本-这是微优化,并且除非您有文件证明它是程序的瓶颈,否则您绝对不要担心它。几乎普遍来说,程序的速度降低是由于效率低下,而不是因为if语句个别。

这样说-可以比较存储在HashMap中的对象,但是HashMap想要比较它们。通常在插入,删除和查找期间完成此操作,以使HashMap知道两个对象是否相等,但是也可以在重新哈希处理期间完成(因为对象通过HashMap重新分配)。该实现甚至可以尝试将您的对象与null进行比较,然后执行某种疯狂的主动缓存或合并方案,以提高内存使用率。您真的不能承担太多,因为HashMap合同的一部分是equals必须对您的对象起作用。

而且,如果您不支持null中的equals,那么您就是breaking the contract for equals as specified in Object,它明确提到传递null应该返回false。如前所述,除非您有可验证的数据表明这是一个瓶颈,否则几乎可以肯定这是一个非常糟糕的主意。

希望这可以帮助!

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

如何修改休眠的SQL查询? - java

我有点好奇,有没有办法修改hibernate的核心,以便我可以自定义生成的SQL query。例如,在生成的查询中添加功能以使用connect by prior(oracle)或我要自定义的任何其他子句。 java大神给出的解决方案 起初,这样的问题总是在我心中敲响警钟。你被警告了...AFAIK,hibernate使用所谓的dialects进行特定的优化。…

Java中的方法是否有“新”修饰符? - java

Java中是否有与C#'s new修饰符等效的符号?我想将其用于单元测试-每个init()方法都应标记为final,并使用@Before进行注释。然后,jUnit执行所有这些init()方法。我不想为每个init()方法都想出新的名字,我绝对想将它们标记为最终名称,以确保它们不会彼此覆盖(另一种模式是覆盖并调用super。每个init()方法的in…

无法在Eclipse中调试条件中的最后一条语句? - java

public static void main(String args[]) { if(true) { int x= 3*44+7; //int y=1; } } 我将问题缩小为这个简单的语句,我真的不知道如何在Eclipse调试器中访问此变量。它总是在以下情况下发生:在if条件中声明变量,try-catch语句,循环等,并且偶然地是该块中的最后一个语句。为…

用Java构建大批量数据处理工具 - java

Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。 3年前关闭。 Improve this question 我正在尝试使用Java构建ETL工具。 ETL工具用于对大量数据(关系型和其他类型)进行批量读取,…