为什么hashcode调用两次?

时间:2015-06-29 09:10:27

标签: java

{{1}}

运行上面的代码“hascode”打印两次,请问有谁可以解释原因?

输出: 哈希码 哈希码 哈希码 哈希码 {com.svdo.td3e.launcher.dao.A@1=sometext2,com.svdo.td3e.launcher.dao.A@1=sometext}

3 个答案:

答案 0 :(得分:1)

在您的代码中,hashcode根本不会被调用,因为它不会覆盖hashCode(大写c)。

如果您纠正方法的名称,它将被称为未定义的次数,具体取决于HashMap实现的详细信息。在我的情况下,只用JDK 8调用一次。

如果您想了解为什么在您的情况下调用两次,我建议使用调试器并使用put方法查看会发生什么。

答案 1 :(得分:0)

上面的代码不会打印任何内容,因为您没有在代码中调用自定义“hashcode()”方法。不要假设您正在重写Object hashCode()方法。在Object类中可用的方法名称。

答案 2 :(得分:0)

我知道了,一个额外的"哈希码"是由于toString方法打印。