我是一個java的新學習者。我已經爲我的動物課覆蓋了equals
和hashcode
。我期望,使用如下的HashSet<Animal>
,只有一個Animal
將被插入HashSet
。然而,第二個Animal
對象即使具有相同的屬性也會被添加到集合中。任何人都可以看看它嗎?等於方法重寫問題
import java.util.*;
class SetTest
{
public static void main(String [] args)
{
Set<Animal>s=new HashSet<Animal>();
Animal a=new Animal(2);
boolean b1=s.add(a);
System.out.println("hi "+b1);
Animal b=new Animal(2);
boolean b2=s.add(b);
System.out.println("hi "+b2);
}
}
class Animal
{
int t;
Animal(int a)
{
t=a;
}
public boolean equals(Object O)
{
if(O instanceof Animal && ((Animal)O).t==t)
return true;
return false;
}
public int hashcode()
{
return t;
}
}
輸出: 喜真 喜真
非常感謝。
問題是什麼? – Maroun