1. Object 的 hashcode 方法是本地方法,该方法直接返回对象的内存地址。如果没有重写hashCode(),则任何对象的hashCode()值都不相等(而hashmap想让部分值的hashCode值一样,所以就要重写)。

  2. HashMap中的比较key是这样的,先求出key的hashcode(),比较其值是否相等,若相等再比较equals(),若相等则认为他们是相等的。若equals()不相等则认为他们不相等。

  3. 如果只重写equals没有重写hashCode(),就会导致相同的key值也被hashcode认为是不同的key值(因为没有重写hashCode(),则任何对象的hashCode()值都不相等),就会在hashmap中存储相同的key值(map中key值不能相同),这就不符合条件了。因此equals和hashcode的关系如下:

equals和hashcode的关系:
1、如果两个对象相同(即用equals比较返回true),那么它们的hashCode值一定要相同
2、如果两个对象的hashCode相同,它们并不一定相同(即用equals比较返回false)