java - hashCode() 根据条件返回特定代码

标签 java arrays hashcode

我已经这样做好几天了。我们的作业要求我覆盖 equals()更重要的是,hashCode() 。比较对象: 二维 int 数组。

hashCode()的标准:

  • 任何与任何旋转变体或旋转变体的反射相匹配的两维数组布局应该具有相同的 hashCode

    从视觉上看,这意味着如果我有这两个二维数组:

    arr 1               arr2
    
    [0, 0, 1]           [1, 0, 0]
    [1, 0, 0]           [0, 0, 1]
    [0, 0, 1]           [1, 0, 0]
    

    以下两个打印语句将是相同的,因为 arr2arr1 的反射(reflect).

    System.out.println(arr1.hashCode());
    System.out.println(arr2.hashCode());   
    



    现在,我对如何实现这一点感到很无助。我想我必须做这样的事情(伪):

    int hashCode() {
    
        lastHash = listOfArrays.last().hashCode()
        variants = this.getHashVariants()
    
        foreach (variants as v)
            if (lastHash == v) return v
        return this.SystemGeneratedHash()
    }
    

    这种方法可能会出现很多错误,但我很困惑,这就是我能想到的。制作 hashCode() 的想法- 函数依赖于外部列表也感觉很恶心。关于这个主题的讲座很糟糕,搜索引擎到目前为止还没有对我有利。

    问:如何让不相同对象只要满足一定的要求就返回相同的hashCode?

  • 最佳答案

    对此有几种可能的解决方案。这里有四个,就在我的脑海中 -

    • 只需返回一个常量。
    • 将所有单元格中的数字相加并返回。
    • 取矩阵行列式的绝对值。
    • 将每个条目乘以单元格到最近角点的距离,然后将它们相加。

    这仅受您的想象力的限制。

    关于java - hashCode() 根据条件返回特定代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22926450/

    相关文章:

    java - 我在哪里可以获得 Sun IDM?

    arrays - 是否可以检查字符串是否与数组或字典中的字符串匹配,Swift?

    java - 在 HashMap 和 HashTable 中计算 hashCode 的工作方式是否不同?

    java - 字符串情况下的哈希码范围

    arrays - 是否有可能有一个懒惰地评估其元素的数组?

    jquery - 从另一个页面链接到特定选项卡

    java - GwtQuery droppable 编译 GWT 2.6.1 错误

    java - 任何人都可以解释这个 HashMap 行为吗

    java - 自动完成弹出窗口时 Eclipse ADT 崩溃

    java - java中如何访问对象数组中的对象中的变量