将学生对象和学生的归属地通过键与值存储到map集合中。
- 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类中要复写方法:
- 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);
- }
- }
-
- }
运行结果: