对于重写hashcode里面的返回值的问题

在学习hashset时重写equals时要重写hashcode,一直不明白hashcode里面返回值的意思

hashcode给比较两个对象是否相等提供了一种快速的方法
我们规定,hashcode相同,对象可以相同,可以不同,但是hashcode不同,对象必然不同。
所以我们在比较两个对象的时候,不需要一个字段一个字段去比较了,可以先比较下hashcode,如果hashcode不同,就知道对象肯定不同。
如果hashcode相同,我们才需要进一步比较。而且如果对象的字段又是对象,那么我们又可以先比较这个字段的hashcode。
比较对象为什么那么重要?因为很多算法都需要,主要是查找算法、数据组织、排序等。
试想,如果我们需要检索一个数组中的一个对象,如果没有hashcode,我们每个都要比较,那么这个运算量就很大了。

返回值true就认为是相同对象false就认为是不同的
基本上的类都继承object的hashcode方法,其中默认就是句柄相同的才是相同
不过可以重写,根据项目的需求
例:Point(点对象的类,还有x,y两个属性)
重写后可以if(this.x==other.x && this.y==other.y)return true return false

重写hashCode就如同上面说的,为了更快速的比较,同时,也是自己进行取舍,对某些属性进行比较之后,按照自定义的要求来进行判断是否为同一个了