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

标签 java hashcode point hashset

有没有什么办法可以真正看到标准java类的源码呢?我正在制作点的哈希表 ( HashSet<Point> ),我想确保它能很好地哈希,但我看不到 Point 的 hashCode() 方法实际上是什么样子,所以我不知道有多好确实如此。谁能帮我?我应该覆盖它吗?如果是这样,是否有一种简单的方法可以在不创建全新的 Java 文件/类的情况下执行此操作?

最佳答案

如果您正在搜索 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)));
}

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

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

关于Java - Point 类的 hashCode() 方法是否有用,还是我应该覆盖它并编写自己的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9251961/

相关文章:

java - 使用 Deflater 和 Inflater 的字节数组长度

java - 如何在 Java 中设计和接口(interface)(OOP 类型),以便我可以使用直接数据库访问或使用 Web 服务?

java - java将所有数组元素重新初始化为零

c# - C# 中的 GetHashCode 指南

Java : hash function

java - 如何通过 Selenium 和 Java 使用 AShot 库截取整页截图

java - 我应该如何为 Java 中的循环链表定义一个好的 hashCode?

c# - 检查特定点 x,y 是否在矩形内

django - 在 Geodjango 应用程序中将几何点转换为纬度/经度

lua - 为什么 Lua 算术不等于自身?