黑馬程序員一在hashSet集合中比較對象需要覆蓋的兩個方法hashCode(),equlas()

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a>、期待與您交流! ----------


下面定義一個HashSet集合,在集合中存入Person_1對象。

已知該對象擁有的姓名,年齡屬性值,根據該類的hashCode(),equals()來判斷

覆寫這連個方法,進行比較判斷,是否爲同一對象,添加進HashSet集合中。




import java.util.HashSet;
import java.util.Iterator;

/*
 * 
 * 往hashSet集合中存入自定義對象
 * 姓名年齡相同爲同一對象 ,通過hashCode(),equals()來判斷
 */
class Person_1
{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}

Person_1(String name,int age)
{
this.name=name;
this.age=age;
}
public int hashCode()
{
System.out.println(this.name+"....hasCode");
return name.hashCode()+age*39;
}

public boolean equals(Object obj)
{
if(!(obj instanceof Person_1))
return false;
Person_1 p=(Person_1)obj;
System.out.println(this.name+"...equals..."+p.name);
return this.name.equals(p.name)&&this.age==p.age;
}
}

public class HashSetTest
{

public static void main(String[] args)
{
HashSet<Person_1> hs=new HashSet();
hs.add(new Person_1("a1", 11));
hs.add(new Person_1("a2", 12));
hs.add(new Person_1("a3", 13));
hs.add(new Person_1("a2", 12));

Iterator it=hs.iterator();

while(it.hasNext())
{
Person_1 p=(Person_1)it.next();
System.out.println(p.getName()+"..."+p.getAge());
}

}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章