我有这样的hashmap
HashMap<Man, Double> d = new HashMap<>();
然后我向其中添加新的一对。
d.put(new Man("John"), 5.);
如何从这张 map 中检索这对? 我尝试这样做:
Man man = new Man("John");
System.out.println(d.get(man));
但结果我得到了 null
而我期望 5
。
最佳答案
只有在 Man< 类中覆盖
允许您的 equals(Object obj)
和 hashCode()
方法时,这才有效HashMap
理解即使它们不是相同的实例,它们也具有相同的内容并且应该被视为您的 map 中的相同键。
所以假设你的类 Man
是这样的:
public class Man {
private final String name;
public Man(final String name) {
this.name = name;
}
...
}
如果您要求您的 IDE 为您生成方法,您将得到如下内容:
@Override
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || this.getClass() != o.getClass()) return false;
final Man man = (Man) o;
return Objects.equals(this.name, man.name);
}
@Override
public int hashCode() {
return Objects.hash(this.name);
}
关于java - 通过用户对象从 Hashmap 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41230294/