Java-Point类的hashCode()方法有什么好处,还是应该重写它并编写自己的方法?

蒂姆:

有什么办法可以实际看到标准Java类的源代码吗?我正在制作一个点(HashSet<Point>的哈希表,我想确保它能很好地进行哈希处理,但是我看不到Point的hashCode()方法的实际外观,所以我不知道它的实际效果如何。谁能帮我?我应该覆盖它吗?如果是这样,是否有一个简单的方法就可以执行此操作而无需创建一个全新的Java文件/类?

雷根迪:

如果要搜索的hashCode()of 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)));
}

注意问题“它会很好地散列吗?” 很难回答,这主要取决于使用模式。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章