hashCode和equals区别
- hashCode效率高,但不够准确(可能出现hash冲突)
- equals方法准确,但是效率较低 因此先采用hashCode比较,然后在采用equals方法比较,这种比较方案提高了效率还保持了准确性,所以原则上有hashCode不同则equals一定不同;equals相同则hashCode一定相同。
在HashMap、HashSet等集合中比较对象时,都会先比较对象的hash值,然后调用equals方法进行比较,这种比较方法大大提高了比较的效率。
为什么重写equals,必须要重写hashCode?
如果理解了上面的文字,答案就非常显而易见了!
- hashCode极大地提高比较对象时的效率,减少了采用equals方法比较的次数
- 避免出现equals相等而hashCode不相等的情况。