Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Person类的name属性进行比较,如果name相同,hashCode()方法的返回值相同,equals方法返回true。
import java.lang.Object; public class Person { String name; int age; public Person(String name,int age){ super(); this.name = name; this.age = age; } public int hashCode(){ return name.hashCode(); } public boolean equals(Object obj) { if(this==obj) return true; if(obj==null) return false; Person other = (Person) obj; return other.name.equals(this.name); } }
import java.util.*; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub HashSet hashSet = new HashSet(); Person p1 = new Person("tian han",20); Person p2 = new Person("xiao huang",20); Person p3 = new Person("tian han",21); hashSet.add(p1); hashSet.add(p2); hashSet.add(p3); for(Object obj:hashSet){ Person p =(Person) obj; System.out.println(p.name+":"+p.age); } } }