+(Figure1-1)(Figure1-1)所示,对于实现hash算法的集合,如HashSet,假设会将hash值对应的区域分为"32"个区域,集合在寻找对象的时候,首先,会根据自身的hashcode%32,所得的值去相对于的区域寻找对象
这显然提高了查询的效率
当然,对于没有实现hash算法的集合,实现GetHashCode()方法是没有意义的
话说回来,为什么在许多情况下,当我们重写了Equals()方法时,编译器会提示我们同时也重写GetHashCode()方法
试想,当我们去添加一个对象(此时我们只是重写了Equals()方法,没有重写GetHashCode()方法),这时会有两种情况,其一是在"已有"和当前对象相同的区域寻找,此时,因为对象重复,无法添加(因为我们重写了Equals()方法);其二,不在那个区域查找,也就是说,在两个不同的区域查找,此时可以再添加(因为在不同的区域查找
所以说,很多时候,编译器会提示我们在重写Equals()方法的时候,同时也重写GetHashCode()方法
从这里也可以看出,对于没有实现hash算法的集合,重写GetHashCode()方法是没有意义的
(因为只有hash算法才将其分域)
classPoint{privateint_x;//横坐标
publicintX{get{return_x;}set{_x=value;}}privateint_y;//纵坐标
publicintY{get{return_y;}set{_y=value;}}publicPoint(intx,inty){this
_x=x;this
_y=y;}//overridetheObject'sEquals()Method
publicoverrideboolEquals(objectobj){if(obj==null)thrownewNullRefe