问题出在标题中。我使用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或类似的东西时使用它呢?
答案 0 :(得分:8)
此类equals
可行。您还必须以一致的方式覆盖@Override
public boolean equals(Object other)
{
if (!(other instanceof Player))
return false;
Player op = (Player) other;
return id == op.id;
}
:
gtk_entry_set_text (GTK_ENTRY (entry1), buffer);
答案 1 :(得分:1)
对象存储在散列桶中,比如说你有100个对象,如果100个中有50个返回哈希码值&#34; 123&#34;剩余的50个回报&#34; 124&#34;它们存储在不同的两个桶中,因此减少了所需的搜索时间。
搜索第一个目标是找到对象所属的存储桶,一旦找到存储桶然后调用equls方法找到对象
不是在一个地方stroing所有对象(搜索很困难),基于散列的集合将具有相同散列码值的对象组合在一起,每个这样的组都存储在称为散列桶的位置