在复习SCJP时候,有问到
if the hashcode values are different, the objects might be equal.这里的hashcode是什么啊?谢谢大家!

解决方案 »

  1.   

    hashcode可以相同的,看你怎么定义了
      

  2.   

    一般情况如果hashCode相同,则equals应该也判定相等。
    就是一个散列码,就像MD5一样,但没MD5那么复杂。
    Think In Java 3里面有一个比较好的算法。
      

  3.   

    hashcode是散列码,HashMap是用hashcode()方法将你的键对象(object)散列成hashcode(int)作为数组的下标.建议复习一下数据结构的哈希查询.
      

  4.   

    散列的价值在于速度:散列使得查询得以快速进行。
    查询一个值的过程首先就是计算散列码,然后使用散列码查询数组。数组并不直接保存值,而是保存值的list。然后对list中的值使用equels()方法进行线性查询。这部分查询会比较慢,但是,如果散列函数好的话,数组的每个位置只有较少的值。因此不是查询真个list,而是快速的跳到数组的某个位置,只对少数的元素进行比较。
    默认的散列码计算方法是:使用对象的地址计算散列码。以上引自thinking in java
      

  5.   

    a.equals(b) 可以推出 a.hashCode() == b.hashCode();
    反之不行,即可能会存在  a.hashCode() == b.hashCode() 但 a.equals(b) == false一般来说hashCode只会用在HashMap等等这些类上,用处在于快速查找。
    你有兴趣可以看看它的代码实现