写一个类Gerbil,把它作为HashMap中的键来使用. 如:map.put(new Gerbil(1),”ok”); map.get(new Gerbil(1))可以得到值ok;用代码说明
时间: 2023-06-01 14:07:46 浏览: 136
Java用自定义的类作为HashMap的key值实例
好的,以下是您的要求的代码示例:
```java
import java.util.HashMap;
class Gerbil {
private int gerbilNumber;
public Gerbil(int gerbilNumber) {
this.gerbilNumber = gerbilNumber;
}
@Override
public int hashCode() {
return gerbilNumber;
}
@Override
public boolean equals(Object o) {
if (o instanceof Gerbil) {
Gerbil other = (Gerbil) o;
return gerbilNumber == other.gerbilNumber;
}
return false;
}
}
public class Test {
public static void main(String[] args) {
HashMap<Gerbil, String> map = new HashMap<>();
Gerbil gerbil1 = new Gerbil(1);
map.put(gerbil1, "ok");
String value = map.get(new Gerbil(1)); // 注意这里创建了一个新的 Gerbil 对象
System.out.println(value); // 输出 "ok"
System.out.println(gerbil1.equals(new Gerbil(1))); // 输出 true,hashCode 相同,equals 返回 true
}
}
```
这里定义了一个 Gerbil 类,它包含一个 gerbilNumber 成员变量,用于标识它的编号。在 Gerbil 类中重写了 hashCode 和 equals 方法,这样才能在 HashMap 中正确使用 Gerbil 对象作为键。在测试中,我们创建了一个 HashMap 对象 map,并将一个 Gerbil 对象作为键,值为字符串 "ok"。然后我们新创建了一个 Gerbil 对象,使用它作为参数调用 map 的 get 方法,返回值为 "ok",说明正确地找到了对应的值。最后我们还在测试中打印了两个 Gerbil 对象的 equals 方法比较结果,结果为 true,说明它们是相等的。
阅读全文