gpt4 book ai didi

java - 我需要实现 hashCode() 和 equals() 方法吗?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:29:54 25 4
gpt4 key购买 nike

如果我有一个映射和一个对象作为映射键,默认的 hash 和 equals 方法是否足够?

class EventInfo{

private String name;
private Map<String, Integer> info
}

然后我想创建一个 map :

Map<EventInfo, String> map = new HashMap<EventInfo, String>();

我必须显式实现 hashCode() 和 equals() 吗?谢谢。

最佳答案

是的,你知道。 HashMap 通过计算键的散列码并将其用作基点来工作。如果 hashCode 函数没有(被你)覆盖,那么它将使用内存地址,并且 equals 将与 ==.

如果您在 Eclipse 中,它会为您生成它们。点击Source菜单→Generate hashCode() and equals()

如果您没有 Eclipse,这里有一些应该有用。 (如上所述,我在 Eclipse 中生成了这些。)

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((info == null) ? 0 : info.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof EventInfo)) {
return false;
}
EventInfo other = (EventInfo) obj;
if (info == null) {
if (other.info != null) {
return false;
}
} else if (!info.equals(other.info)) {
return false;
}
if (name == null) {
if (other.name != null) {
return false;
}
} else if (!name.equals(other.name)) {
return false;
}
return true;
}

关于java - 我需要实现 hashCode() 和 equals() 方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15351261/

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