import java.util.*;

/*
往hashSet集合中存入自定对象
姓名和年龄相同为同一个人,重复元素。

*/
class HashSetTest 
{
 public static void sop(Object obj)
 {
  System.out.println(obj);
 }
 public static void main(String[] args) 
 {
  HashSet hs = new HashSet();

  hs.add(new Person("a1",11));
  hs.add(new Person("a2",12));
  hs.add(new Person("a3",13));
 hs.add(new Person("a2",12));

 

  Iterator it = hs.iterator();

  while(it.hasNext())
  {
   Person p = (Person)it.next();
   sop(p.getName()+"::"+p.getAge());
  }
 }
}
class Person
{
 private String name;
 private int age;
 Person(String name,int age)
 {
  this.name = name;
  this.age = age;
 }

 public int hashCode()
 {
  System.out.println(this.name+"....hashCode");
  return name.hashCode()+age*37;//*37防止n.hashCode()+age的hashCode相等

 //覆写hashCode方法,因为底层自动调用hashCode()和equals()方法
  //所以如果hashCode相等就不需要调用equals() 

//出去重复

 public boolean equals(Object obj)
 {

  if(!(obj instanceof Person))  //所传元素类型是否Person类型,不是错误
   return false;

  Person p = (Person)obj;
  System.out.println(this.name+"...equals.."+p.name);

  return this.name.equals(p.name) && this.age == p.age; //比较内容是否相等
 }


 public String getName()
 {
  return name;
 }
 public int getAge()
 {
  return age;
 }
}