//このコードの出力は3ではなく5になります //なぜこのコードの出力は3ではなく5ですか? //このコードの出力5の代わりに、このコードの出力は、public int hashcode()
をすることになっていない5の代わりに、3以下のコードは、サイズを5として返すのですか? hashcodeとequalsメソッドがオーバーライドされても、セットサイズが返されます3
public class Dummy {
public static void main(String[] args) {
Set set = new HashSet();
set.add(new Student("abc"));
set.add(new Student("abcd"));
set.add(new Student("abc"));
set.add(new Student("abc"));
set.add(new Student("abcdef"));
System.out.println(set.size());
}
}
class Student
{
private String age;
public Student(String age)
{
this.age=age;
}
public boolean equals(Student stu)
{
System.out.println("equals from Student parameter called");
return false;
}
public boolean equals(Object obj)
{
System.out.println("equals from Object parameter called");
return true;
}
public int hashcode()
{
System.out.println("hashcode called");
return 17;
}
}
'public int hashcode()'はオーバーライドではないため、@Overrideアノテーションを使用する必要があります。私はあなたがどのように3の結果を期待するかわかりません。 –