将学生对象和学生的归属地经过键与值存储到map集合中。java
import java.util.HashMap; import java.util.Iterator; import java.util.Set; class Student { String name; int age; public Student(String name,int age){ super(); this.name=name; this.age=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; } } public class HashMapDemo{ public static void main(String[] args){ HashMap<Student,String> hm=new HashMap<Student,String>(); hm.put(new Student("lisi",38),"北京"); hm.put(new Student("zhaosi",34),"上海"); hm.put(new Student("xiaoqiang",31),"沈阳"); hm.put(new Student("wangcai",28),"大连"); hm.put(new Student("zhaosi",34),"铁岭"); Set<Student> keySet=hm.keySet(); Iterator<Student> it=keySet.iterator(); while(it.hasNext()){ Student key=it.next(); String value=hm.get(key); System.out.println(key.getName()+":"+key.getAge()+"..."+value); } } }运行结果:
当键同样时,其值并无被覆盖,因此要判断键是否相同,HashMap须要定义hashCode和equals方法,在Student类中要复写方法:this
import java.util.HashMap; import java.util.Iterator; import java.util.Set; class Student { String name; int age; public Student(String name,int age){ super(); this.name=name; this.age=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; } public int hashCode(){ //复写hashCode() return name.hashCode()+age; } public boolean equals(Object obj){ //复写equals if(this==obj) return true; if(!(obj instanceof Student)) throw new ClassCastException("类型错误"); //输入类型错误 Student p = (Student)obj;//强制转换 return this.name.equals(p.name) && this.age==p.age; //说明姓名和年龄相同则为同一元素 } } public class HashMapDemo{ public static void main(String[] args){ HashMap<Student,String> hm=new HashMap<Student,String>(); hm.put(new Student("lisi",38),"北京"); hm.put(new Student("zhaosi",34),"上海"); hm.put(new Student("xiaoqiang",31),"沈阳"); hm.put(new Student("wangcai",28),"大连"); hm.put(new Student("zhaosi",34),"铁岭"); Set<Student> keySet=hm.keySet(); Iterator<Student> it=keySet.iterator(); //如下被注释的代码能够替换上面两句: //Iterator<Student> it=hm.keySet().iterator(); while(it.hasNext()){ Student key=it.next(); String value=hm.get(key); System.out.println(key.getName()+":"+key.getAge()+"..."+value); } } }运行结果: