首先我们需要明白 hashCode()方法的作用.例如,在HashSet集合中,如何保证元素的唯一性的呢?就是首先通过hashCode方法,计算两个元素的hashcode是否相同.默认情况下HashCode就是用内存地址来计算的,不同的对象必然哈希值是不同的.
那么现在我需要它按照我指定的方式去比较,例如按照对象的name和sum来比较,那么我就需要复写hashCode().
覆盖的时候,有为什么要返回 name.hashCode()+sum*78?因为 有可能出现下面这种情况
name1.hashCode()=2 sum1=1
name2.hashCode()=1 sum2=2
name和sum都不相同,但是计算出的哈希值却相同,所以+sum*78 这样避免了不同的对象得出相同的哈希值.你也可以不乘以78 这个随意了... |