1、如果两个对象相同,那么它们的hashCode值一定要相同;2、如果两个对象的hashCode相同,它们并不一定相同 
   这两句话是对的么?
   

解决方案 »

  1.   

    看javaAPI中java.lang.Object对hashCode方法的描述即可
      

  2.   

    通过一定的算法计算出同一个对象的hashcode值肯定一样,不同的对象由于算法不一可能会导致一样的hashcode码。
      

  3.   

    看一下Object的hashcode和equals方法
      

  4.   

    2 包括Java在内的绝大多数编程语言里的整数类型是有限的。
    无穷的对象实例映射到有限的整型不可避免的出现多一映射,所以不同的实例可以有相同的hashCode。
      

  5.   

    举个例子 你就懂了,比如hashcode的规则为符合x%3==0的 存到hashcode里,这样3 6 9都得进去,可是就只能存3在正确是位置,而6在这一位的下一位,9在下一位。
    这样 回答第一个如果两个对象相同,那么它们的hashCode值一定要相同;两个对象都是3,那么他们值就一样咯。回答第二个如果两个对象的hashCode相同,它们并不一定相同 
      就像 3 6 hashcode相同 可是他们就不同啊
      

  6.   

    hashCode 方法如果是自己实现的,就要保证相同的对象他们的 hashCode 值必须一样,否则在使用 hashCode 的类库中会产生问题。
      

  7.   

    建议楼主看看数据结构中的散列然后你再了解下java中的equals和hashCode。以及在运用hash的集合类库中的使用实现。
      

  8.   

    两个对象相等必须满足两个条件:1、hashcode值相等 ;2、对象equals
    所以你说的两句话都是正确的