こんにちは、私はJavaを初めて使用します。セットコレクションが重複しないことを知っており、要素がコレクションに既に存在する場合、そのcontainsメソッドはtrueを返す必要があります。以下のプログラムを実行しようとしていますが、予期しない結果が得られます。
public class UserDefinedName {
private final String first, last;
public UserDefinedName(String first, String last) {
this.first = first;
this.last = last;
}
public boolean equals(Object o) {
if (!(o instanceof UserDefinedName))
return false;
UserDefinedName n = (UserDefinedName) o;
return n.first.equals(first) && n.last.equals(last);
}
public static void main(String[] args) {
Set<UserDefinedName> s = new HashSet<UserDefinedName>();
s.add(new UserDefinedName("Carballo", "Videl"));
System.out.println(s.contains(new UserDefinedName("Carballo", "Videl")));
}
}
出力trueを期待していますが、プログラムはfalseを出力します。私は何を間違っていますか?