gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:04:56 25 4
gpt4 key购买 nike

我已经这样做好几天了。我们的作业要求我覆盖 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com