/** @param args */ public static void main(String[] args) { HashSet<Teacher> aaSet = new HashSet<Teacher>(); Teacher aaTeacher = new Teacher("baicai", "07073120"); Teacher bbTeacher = new Teacher("baicai", "07073120"); Teacher ccTeacher = new Teacher("qingcai", "07073121"); Teacher ddTeacher = new Teacher("xigua", "07073122"); aaSet.add(aaTeacher); aaSet.add(bbTeacher); aaSet.add(ccTeacher); aaSet.add(ddTeacher); System.out.println( "aaTeacher_" + aaTeacher.hashCode() + ".equals(bbTeacher_" + bbTeacher.hashCode() + ") = " + aaTeacher.equals(bbTeacher)); /** 由于重写了teacher里面的hashcode()方法,所以这边判断的时候,相同元素的hashcode就是一样的了, 就不会出现Taa的那个人问题了 */ System.out.println("对象的内容" + "\t\t" + "对象的散列码"); for (Teacher teacher : aaSet) { System.out.println(teacher.toString() + "\t\t" + teacher.hashCode()); } }