java吧 关注:1,233,025贴子:12,700,551
  • 4回复贴,共1

求助 两个对象equals为true,那么这两个对象的haseCode相等吗

取消只看楼主收藏回复

RT 求助 两个对象equals为true,那么这两个对象的haseCode相等吗


IP属地:陕西1楼2015-05-19 14:20回复
    当然 使用jdk里面已有对象 而且不重写 equals方法


    IP属地:陕西2楼2015-05-19 14:21
    收起回复
      @我现在年轻
      下面是官方文档给的hashcode的定义
      hashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。
      hashCode 的常规协定是:
      在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
      如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
      如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。


      IP属地:陕西7楼2015-05-19 14:45
      收起回复
        如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
        这个好像是官方给的一个规定 equals 和 hashcode 都可以被重写但是官方似乎规定了,equals为 ture 是 hashCode也是相等的才行,当然还要看具体的实现


        IP属地:陕西9楼2015-05-19 14:48
        回复
          hashCode 打错了 不要在意


          IP属地:陕西10楼2015-05-19 14:49
          回复