gpt4 book ai didi

java - HashMap 不适用于用户定义的键类

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

我正在使用处理语言(源自 Java PApplet)版本 3.01

这是我的代码...

  Pig a = new Pig(1);
Pig b = new Pig(1);
HashMap<Pig, String> m = new HashMap<Pig, String>();
m.put(a,"foo");
String c = m.get(b);
println(c);

class Pig {
int a;
Pig(int x) { a=x;}
boolean equals(Pig b) { return b.a==a;}
int hashCode() { return a;}
}

正如你所看到的,我使用 Pig 作为键,我定义了 equals 和 hashCode。我期望输出“foo”,但是,我得到输出 null。

知道这是怎么回事吗?为什么这不起作用?

最佳答案

尝试一下,您根本没有/正确地重写对象方法:

class Pig {
int a;

Pig(int x) {
a = x;
}

@Override
public boolean equals(Object b) {
if(b == null) return false;
if(!(b instanceof Pig)) return false;
if(b == this) return true;
return ((Pig) b).a == a;
}

@Override
public int hashCode() {
return a;
}
}

关于java - HashMap 不适用于用户定义的键类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33467462/

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