为什么重写 equals 时必须重写 hashCode 方法?