Ken*_*tov 5 java dictionary hashmap
我有这样的 hashmap
HashMap<Man, Double> d = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
然后我添加新的一对.
d.put(new Man("John"), 5.);
Run Code Online (Sandbox Code Playgroud)
如何从此地图中检索此对?我试着这样做:
Man man = new Man("John");
System.out.println(d.get(man));
Run Code Online (Sandbox Code Playgroud)
但结果是null我想到的结果5.
这只有在您覆盖方法时才能使用,equals(Object obj)并且hashCode()在您的类Man中允许您HashMap理解即使它们不是相同的实例,它们也具有相同的内容,并且应该被视为地图中的相同键.
所以假设你的班级Man是这样的:
public class Man {
private final String name;
public Man(final String name) {
this.name = name;
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果您要求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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |