【发布时间】:2015-05-29 07:20:54
【问题描述】:
问题在标题中。我使用HashMap如下:
Map<Player, Partner> m = new HashMap<Player, Partner>();
//do some on m
Player 和 Partner 都只是代表数据模型的 POJO。
public class Player{
private int id;
private String name;
//etc, GET, SET
}
public class Partner{
private int id;
private String name;
//etc, GET, SET
}
我想说这些类的两个对象是等价的iff它们具有相同的id。那么,我应该写hashCode 类似
public int hashCode(){
return id;
}
这是一种正确的方法吗?当我要使用 HashMap 或类似的东西时,为什么要使用它?
【问题讨论】:
-
如果你在谈论等价,你应该覆盖 equals
-
@Leon 不完全是,我不明白为什么我应该在使用 HashMap 时覆盖 shashCode
-
对于您的 DTO,您应该始终覆盖 hashcode、equals 和 toString