gpt4 book ai didi

Java : Hashcode of a Class A containing a Class B which contains A

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:44:28 26 4
gpt4 key购买 nike

我在我的类中实现哈希码函数时遇到问题。正如标题中所解释的,我有两个类:

  • 类 A 代表学校考试,因此它包含多个属性(即主题、标记和代表参加考试的学生的类实例)。

  • 如您所料,类(class) B 代表学生。它有一些属性(即姓名、地址、年龄等)和一个包含多个 A 类实例的 ArrayList(学生可以参加很多考试)。

我的问题来了,我被要求在两个类中实现哈希码函数。我使用的哈希码是我学过的哈希码,它是将每个属性的哈希码相加,乘以一个整数,具体取决于它的类型(即字符串乘以 31,整数乘以 17,对象乘以 13,等等)。

但是如果我调用A类的hashcode,那么调用B类的hashcode,然后又回调A类的hashcode。

如何摆脱这个循环?我想去掉测试类(B)中学生类(A)hashcode的hashcode调用。但是还有其他选择吗?这是我第一次尝试寻求帮助,我希望我没有让它难以理解。

最佳答案

避免问题的一种方法是更改​​抽象。代表学校考试的类(“A 类”)不必持有学生实例(“B 类”)的引用。相反,它可以包含该学生的一些标识符(学生的一些独特属性)。

另一种方式:我认为可以说学生不是由他们参加的考试来定义的。这意味着除了测试列表之外所有属性都相同的两个学生实例指的是同一个学生。这意味着测试列表不应参与 hashCode()equals() 方法。

关于Java : Hashcode of a Class A containing a Class B which contains A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55158328/

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