实例:Aa BB有相同的hashCode值。
查看String的hashCode源码可以看到:公式
A的ASCII码是65 B是 66
公式刚好 31*66 +66 = 2112 = 31*65+97
为什么重写了equals必须重写hashCode:
两个Test5对象实例相等(equals 返回true),但是放到HashSet中是两个。预期两个相同的放到Set集合中,应该只存在一个。
重写hashCode之后就变成了一个:
知识来源:
实例:Aa BB有相同的hashCode值。
查看String的hashCode源码可以看到:公式
A的ASCII码是65 B是 66
公式刚好 31*66 +66 = 2112 = 31*65+97
为什么重写了equals必须重写hashCode:
两个Test5对象实例相等(equals 返回true),但是放到HashSet中是两个。预期两个相同的放到Set集合中,应该只存在一个。
重写hashCode之后就变成了一个:
知识来源: