楼主 ,首先 你说的这两行是在hashCode方法中的。
result = prime * result + x; //将x坐标经过运算赋值给result
result = prime * result + y; //将result经过运算,并加上y再赋值给result
最后这个result就是要返回的哈希值。这里哈希值的计算方法是灵活多样的,你计算地越复杂,那么每个元素的hashCode就更不容易重复。如果仅仅是对x进行运算而返回hashCode值的话,那么对于(2,6)和(2,9),这两个坐标的hashCode值就会相同,而如果对x和y都参与处理的话,例如就用上面的方法计算,就会得到不同的hashCode。
另外,在hashSet集合中存储元素时,如果两个元素的hashCode值不同,那么就直接将元素存储在hashSet集合中。如果两个元素的hashCode相同,那么还要调用equals方法,再次判断这两个元素是否是同一个元素的情况。 |