{{1}}
运行上面的代码“hascode”打印两次,请问有谁可以解释原因?
输出: 哈希码 哈希码 哈希码 哈希码 {com.svdo.td3e.launcher.dao.A@1=sometext2,com.svdo.td3e.launcher.dao.A@1=sometext}
答案 0 :(得分:1)
在您的代码中,hashcode
根本不会被调用,因为它不会覆盖hashCode
(大写c
)。
如果您纠正方法的名称,它将被称为未定义的次数,具体取决于HashMap
实现的详细信息。在我的情况下,只用JDK 8调用一次。
如果您想了解为什么在您的情况下调用两次,我建议使用调试器并使用put
方法查看会发生什么。
答案 1 :(得分:0)
上面的代码不会打印任何内容,因为您没有在代码中调用自定义“hashcode()”方法。不要假设您正在重写Object hashCode()方法。在Object类中可用的方法名称。
答案 2 :(得分:0)
我知道了,一个额外的"哈希码"是由于toString方法打印。