现在的位置: 首页 > 综合 > 正文

黑马程序员一在hashSet集合中比较对象需要覆盖的两个方法hashCode(),equlas()

2018年05月23日 ⁄ 综合 ⁄ 共 1302字 ⁄ 字号 评论关闭

------- <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);
}
}

抱歉!评论已关闭.