为什么说:“如果根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相同的整数结 为什么说:“如果根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相同的整数结果。 ”? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请注意,他说的是“必须”,而不是“必定”也就是说,你在写自己的class的时候“应该”遵守"a.equals(b)" <=> "a.hashCode() == b.hashCode()" 为什么equals与hasecode存在这样的关系呢? Hashtable和HashMap等使用hashCode作为key值参考,所以相等的对象(equals(Object))须有相同hashCode 这是一个规范,因为在HashMap等常用数据结构,算法中hashCode会被用于寻找存放位置,而equals用于判断两者是否相同。显然你不能造成放在同一位置的Key不相同,或者不相同的两个Key放在一个位置,或者不同位置的Key相同,或者相同的Key位置不相同。 上面"a.equals(b)" <=> "a.hashCode() == b.hashCode()"说错了,应该是"a.equals(b)" => "a.hashCode() == b.hashCode()"单向的,hashCode相同不能保证equals 对,API经常出现at the option of the implementation就是说sun/jcp只给出了框架,并给出实现的建议以及最好的(也就是SUN的JDK实现的形式),但是,究竟实现成什么样就是由实现者决定了,只要逻辑正确就OK,使用的时候需要参照API 急需权限管理系统,jsp做的 Method invoke(Object obj, Object... args) 问一个超级白痴的数据库锁问题 给我一些常用的字符处理函数 新手求救!30分献上!! 帮我看一眼这个程序中HASHMAP起到什么作用了? 如何把解决这个问题,来看看! 如何实现压缩文件的解压? 如何解决Java中部同类中变量的使用 快看看吧!!! 系统资源被耗尽!! 求助,关于日期时间的正则表达式
"a.equals(b)" <=> "a.hashCode() == b.hashCode()"
说错了,应该是
"a.equals(b)" => "a.hashCode() == b.hashCode()"单向的,hashCode相同不能保证equals
at the option of the implementation
就是说sun/jcp只给出了框架,并给出实现的建议以及最好的(也就是SUN的JDK实现的形式),但是,究竟实现成什么样就是由实现者决定了,只要逻辑正确就OK,使用的时候需要参照API