
先说一下HashCode方法的常规约定
1.对象相等,hashCode值一定相等;
2.对象不相等,哈市Code值可能相等;
3.hashCode值相等,对象不一定相等;
4.hashCode值不相等,对象一定不相等;
当我们将对象写入底层实现为散列表的集合时,会调用hashCode方法计算哈希值; 如果内容相同的两个对象,调用equals方法会返回true,但是由于我们没有重写hashCode方法,默认使用Object类的hashCode方法从对象的存储地址计算散列码,可能导致对象相等而哈希值不相等的情况;
因此我们需要重写hashCode方法,不在通过对象的地址计算哈希值而是通过对象内容组合计算哈希值;