重写equels()后需重写hashcode()的意义

来源:互联网 发布:基于java的嵌入式开发 编辑:程序博客网 时间:2024/06/07 20:22

sun对于eqauls方法和hashCode方法是这样规定的:
1、如果两个对象相同,那么它们的hashCode值一定要相同;

2、如果两个对象的hashCode相同,它们并不一定相同。(例如:String类)

 

它的意义在于:

在集合类中例如Set的要求是,不能有重复的元素出现在集合中。

判断不重复的过程:首先比较的是hashcode,若相同再调用此对象的equals()方法做判断。

所以,为了提升集合类的性能,在重写equels()时有必要重写hashcode(),这样就能在比较hashcode后以很快的速度做出判断是否为重复的元素。

 

例外:

这仅仅是一个规定,eqauls()返回true,hashcode也可以不同。

 

 

原创粉丝点击