@Override public int hashCode(){
  long value=17;
  value+=37 * value + Double.doubleToLongBits(Math.abs(x));
  value+=37 * value + Double.doubleToLongBits(Math.abs(y));
  return (int)(value ^ (value >>> 32));
}

@ Override public int hashCode ( ) { long value = 17 ; value += 37 * value + Double . doubleToLongBits ( Math . abs ( x ) ) ; value += 37 * value + Double . doubleToLongBits ( Math . abs ( y ) ) ; return ( int ) ( value ^ ( value > > > 32 ) ) ; }
calcualates hashcode based on stored coordinates . since we want + 0 . 0 and - 0 . 0 to be treated the same , we ignore the sign of the coordinates .
