gpt4 book ai didi

java - hashcode() 的有效且高效的实现

转载 作者:行者123 更新时间:2023-12-02 07:02:16 25 4
gpt4 key购买 nike

我有一个类(class)学校:

public class School{

private int noOfTeachers;
private int noOfStudents;

//setters and getters....

public boolean equals(Object that){
//instance of check..
return (this.noOfTeachers == ((School)that).noOfTeachers ||
this.noOfStudents== ((School)that).noOfStudents);
}


public int hashCode(){
//What goes in here??? o.O
}
}

我应该如何继续实现此类的hashCode?我无法想到一种同时涉及 noOfTeachersnoOfStudents 来计算哈希的策略。相反,noOfTeachersnoOfStudents 组合似乎违反了 equalshashCode 之间的约定。

最佳答案

您将找不到适合您的类的任何适当的 hashCode() 实现,这将满足您的需求!因为您的 equals 方法对您的类的属性使用 OR 。对于任何对象的多个状态,在 equals 方法中使用 OR 都会返回 true

因此,使用 hashCode() 的唯一返回值,您当然无法表示多个状态!而且您应该知道,hashCode() 必须返回对象的唯一值。由于它返回多个值,导致将对象放入任何映射中时产生歧义(并损害确定性)。因为这违反了“ map 键的唯一性”的假设。

关于java - hashcode() 的有效且高效的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500340/

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