0

セットにはエンティティCommunityのオブジェクトが1つだけ含まれており、同じ値の2つのオブジェクトを使用しており、オブジェクトの1つがそのセットに格納されています

Set<Community> communties = template.get(User.class, "1").getCommunities();
Community com = template.get(Community.class, 1);

for(Community community : communties)
        System.out.println(community.equals(com));

System.out.println(communties.contains(com));

最初のステートメントは印刷されますtrueが、2番目のステートメントは印刷されfalseます。なんで?

4

1 に答える 1

2

hashCode()とequals()をオーバーライドする必要があります。そうしないと、Setはオブジェクトの正しいバケットを見つけられず、equals()の比較にも到達しません。

Eclipseの「ソース」メニューを使用して、かなりまともなequals()メソッドとhashCode()メソッドを生成できます。

于 2012-12-27T12:03:15.347 に答える