import java.util.*;
class HashMapDemo2
{
public static void main(String[] args)
{
HashMap<Student, String> hm = new HashMap<Student, String>();
hm.put(new Student("张三", 20), "北京");
hm.put(new Student("李四", 21), "西安");
hm.put(new Student("王五", 15), "重庆");
hm.put(new Student("赵六", 26), "成都");
hm.put(new Student("小七", 12), "绵阳");
hm.put(new Student("小七", 12), "绵阳"); //未覆盖hashCode方法和equals方法时,能够存入相同的元素.
Set <Map.Entry<Student, String>> s = hm.entrySet();
for (Iterator<Map.Entry<Student, String>> it = s.iterator(); it.hasNext(); )
{
Map.Entry<Student, String> me = it.next();
Student stu = me.getKey();
String addr = me.getValue();
System.out.println(stu.getName() + ".." + stu.getAge() + ".." + addr);
}
}
}
class Student
{
private String name;
private int age;
Student(String name, int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public int hashCode() //注意,判断HashSet、HashMap集合的唯一性,覆盖hashCode和equals方法,而TreeMap、TreeMap排序实现comparable或comparator接口.
{
return name.hashCode() + age*29;
}
public boolean equals(Object obj)
{
if (!(obj instanceof Student))
return false;
Student student = (Student)obj;
return this.name.equals(student.name) && this.age == student.age;
}
public String toString()
{
return name + ".." + age;
}
}