equals和hashCode方法主要的区别在于:性能,可靠性;对于需要大量并且快速对比,如果都用equals比较效率太低,所以每当需要对象比较时,先用hashCode对比,如果hashCode值不一样,两对象肯定不相等,也就没必要再用equals比较。
一、hashcode和equals的区别
equals和hashCode方法主要的区别在于:性能,可靠性;
equals方法:因为hashCode并不是完全可靠的,有时候不同的对象生成的hashCode也可能一样(生成hashCode值的公式可能存在问题),所以hashCode并不是完全可靠的,只能通过equals保证两个对象确实相等。
hashCode方法:因为重写equals方法比较复杂,调用equals方法比较对象是否相等的效率比较低,而利用hashCode进行对比,只需要生成一个hash值进行比较就可以,效率较高。
实际应用:对于需要大量并且快速对比,如果都用equals比较效率太低,所以每当需要对象比较时,先用hashCode对比,如果hashCode值不一样,两对象肯定不相等,也就没必要再用equals比较,如果hashCode相等,再用equals对比,euqals相同则表示这两个对象确实相同,既提高了执行效率也保证了可靠性。



