我正在做一项学校作业,我需要存储一堆联系人。每个联系人都有一个HashSet
社交网络帐户、地址和电话号码。
我不想在 my 中存储同一个对象的多个副本HashSet
,所以我已经覆盖了每个对象的hashCode()
andequals()
方法。
但仅对于我的社交网络帐户对象,我HashSet
将同一个对象存储两次!我有两个不同的对象:
SocialNetworkAccount s1 = new SocialNetworkAccount(SocialNetworkAccount.AccountType.FACEBOOK, "wallcrawler123");
SocialNetworkAccount s2 = new SocialNetworkAccount(SocialNetworkAccount.AccountType.FACEBOOK, "wallcrawler123");
s1.equals(s2)
回报true
和s1.hashCode() == s2.hashCode()
回报true
,但s1 == s2
回报false
!为什么?
这是hashCode()
我正在使用的方法:
public int hashCode() {
int prime = 31;
int result = 1;
result = result*prime + type.hashCode();
result = result*prime + id.hashCode();
return result;
}