Java - Point类的hashCode()方法是否有用,或者我应该覆盖它并自己编写?

Tim*_*Tim 5 java point hashcode hashset

有没有办法真正看到标准java类的源代码?我正在制作一个点(HashSet<Point>)的散列表,我想确保它能很好地散列,但是我看不出Point的hashCode()方法究竟是什么样的,所以我不知道它真的有多好.谁能帮我?我应该覆盖它吗?如果是这样,有没有一个简单的方法来做到这一点,而无需创建一个全新的java文件/类?

rle*_*ndi 8

如果您正在搜索的hashCode()java.awt.Point,它的定义java.awt.geom.Point2D.

/**
 * Returns the hashcode for this <code>Point2D</code>.
 * @return      a hash code for this <code>Point2D</code>.
 */
public int hashCode() {
    long bits = java.lang.Double.doubleToLongBits(getX());
    bits ^= java.lang.Double.doubleToLongBits(getY()) * 31;
    return (((int) bits) ^ ((int) (bits >> 32)));
}
Run Code Online (Sandbox Code Playgroud)

请注意问题"它会干好吗?" 很难回答,这主要取决于使用模式.

您可以访问几乎所有"标准Java类"的源代码,只需src.zip在JDK安装目录中搜索该文件(或使用类似Eclipse/NetBeans的IDE并在类名上单击F3).