equals hashcode
equals 出现在Object中,父类通过比较两个对象的地址来判断两个对象是否一致。
hashcode是直接返回对象在内存中的地址。
根据业务需求 我们可能需要重写equals 来判断两个对象是否是相同的。同时要修改hashcode的计算方法。
在用到跟hashmap、hashset hashtree相关的数据结构的时候
如果两个相同的key通过equals判断是相同的。那么取出的值应该也相同。
这时候 只重写equals 不重写hashcode是不行的
hashmap在计算数组的偏移量的时候,是根据hash(key) & node<k,v>[].length - 1计算的
hash(key)是根据hashcode计算的
所以equal 和hashcode 的关系必须满足
如果equal 结果一致。那hashcode的结果必须一致
则如果hashcode的结果不一致,那equals的结果一定不一致
如果equal结果不一致,那hashcode的结果可以一致。也可以不一致。
一般 重写hashcode 通过获得key的string 返回的hashcode来判断。