A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2. 没个学生都有自己的归属地
  3. 学生Student 地址 String
  4. 学生属性, 姓名 年龄
  5. 注意: 姓名和年龄相同的视为同一个学生。
  6. 保证学生的唯一性。

  7. 1描述学生

  8. 2定义map容器,将学生作为键,地址作为值,存入

  9. 3获取map集合中的元素

  10. */

  11. import java.util.*;

  12. class  Test
  13. {
  14.         public static void main(String[] args)
  15.         {
  16.                 HashMap<Student,String> hm = new HashMap<Student,String>();
  17.                         hm.put(new Student("lisi1",21),"beijing");
  18.                         hm.put(new Student("lisi2",22),"shanghai");
  19.                         hm.put(new Student("lisi2",22),"beijing");
  20.                         hm.put(new Student("lisi3",23),"nanjing");
  21.                         hm.put(new Student("lisi4",24),"wuhan");
  22.                        
  23.                 //第一种取出方式
  24.                         Set<Student> keySet = hm.keySet();
  25.                         Iterator<Student> it = keySet.iterator();
  26.                         while(it.hasNext())
  27.                         {
  28.                                 Student stu = it.next();
  29.                                 String addr = hm.get(stu);
  30.                                 sop(stu+"--"+addr);
  31.                         }

  32.                 //第二种取出方式
  33.                         Set<Map.Entry<Student,String>> entrySet = hm.entrySet();
  34.                         Iterator<Map.Entry<Student,String>> it1 = entrySet.iterator();
  35.                         while(it1.hasNext())
  36.                         {
  37.                                 Map.Entry<Student,String> me=it1.next();
  38.                                 Student s = me.getKey();
  39.                                 String str = me.getValue();
  40.                                 sop(s+"----"+str);
  41.                         }
  42.         }

  43.         public static void sop(Object obj)
  44.         {
  45.                         System.out.println(obj);
  46.         }
  47. }

  48. class Student implements Comparable <Student>
  49. {
  50.         private String name;
  51.         private int age;
  52.         Student(String name, int age)
  53.         {
  54.                 this.name = name;
  55.                 this.age = age;
  56.         }
  57.         public int compareTo(Student s)
  58.         {
  59.                 int num = new Integer(this.age).compareTo(new Integer(s.age));
  60.                 if (num ==0)
  61.                         return this.name.compareTo(s.name);
  62.                 return num;
  63.         }
  64.         public int hashCode()
  65.         {
  66.                 return name.hashCode()+age*34;
  67.         }
  68.         public boolean equals (Object obj)
  69.         {
  70.                 {
  71.                         if (!(obj instanceof Student))
  72.                         throw new ClassCastException("类型不对");
  73.                         Student s =(Student)obj;
  74.                         return this.name.equals(s.name)&&this.age==s.age;
  75.                 }
  76.         }
  77.         public String getName()
  78.         {
  79.                 return name;
  80.         }
  81.         public int getAge()
  82.         {
  83.                 return age;
  84.         }
  85.         public String toString()
  86.         {
  87.                 return name+"--"+age;
  88.         }


  89. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
确实是基础的经典,支持一下
回复 使用道具 举报
非常的棒哦
回复 使用道具 举报
遍历MAP的两种方式,覆写JavaBean中的hasCode、equals方法,保证唯一,覆写compareTo方法,保证具有比较性
回复 使用道具 举报
收藏了
!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马