关于这个问题网上有很多,但是我这边还是想用我自己的观点说一下。
- hashCode主要作用在于使用
HashMap
或HashSet
时映射到具体的桶上使用的。 - 重写equals后,若不重写hashCode,会导致两个相同的key在
hashMap
中是两个不同的key ```java // person类重写了equals Person p1=new Person(1,”aa”); Person p2=new Person(1,”aa”); hashMap.put(p1,1); // 由于p1和p2的hashCode不一样,所以不一定映射到相同的桶中。所以取不到值 // 但是业务逻辑上,重写了equals,是想让hashMap认为p1,p2是同一个key值的,所以必定要重写hashCode,让 p1.equals(p2) == true 时 p1和p2的hashCode也相等即可 hashMap.get(p2); //大概率拿不到值
```