sun对于eqauls方法和hashCode方法是这样规定的:
1、如果两个对象相同,那么它们的hashCode值一定要相同;
2、如果两个对象的hashCode相同,它们并不一定相同。(例如:String类)
它的意义在于:
在集合类中例如Set的要求是,不能有重复的元素出现在集合中。
判断不重复的过程:首先比较的是hashcode,若相同再调用此对象的equals()方法做判断。
所以,为了提升集合类的性能 ,在重写equels()时有必要重写hashcode(),这样就能在比较hashcode后以很快的速度做出判断是否为重复的元素。
例外:
这仅仅是一个规定,eqauls()返回true,hashcode也可以不同。
本文详细解释了Java中equals方法和hashCode方法的关系及其在集合类中的应用。通过具体实例展示了为何在重写equals方法时也应重写hashCode方法,以提高集合类如Set的性能。
8万+

被折叠的 条评论
为什么被折叠?



