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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package lianxi;

  2. import java.util.*;
  3. import java.util.Map.Entry;

  4. /*1.描述学生。学生属性 :姓名,年龄
  5. 2. 定义map容器,将学生作为键,地址作为值,存入
  6. 3.获取map容器的元素
  7. */
  8. public class MapTest_1
  9. {

  10.         public static void main(String[] args)
  11.         {
  12.                
  13.                 Map<Student,String > map= new HashMap <Student ,String >();//定义map容器,将学生作为键,地址作为值
  14.                
  15.                 map.put( new Student ("zs1",21), "北京");//将学生信息存入容器内
  16.                 map.put( new Student ("zs2",22), "天津");
  17.                 map.put( new Student ("zs3",23),"上海" );
  18.                 map.put( new Student ("zs4",24),"深圳");
  19.                 map.put( new Student ("zs1",21),"南京");//是否检测出姓名,年龄重复的学生
  20.         //第一种方法 keySet
  21.                
  22.                 Set<Student >  set =map.keySet();//用keySet方法将map存到Set集合中
  23.                
  24.                 Iterator <Student >   ite =set .iterator();//迭代器方法
  25.                
  26.                 while(ite.hasNext())
  27.                 {
  28.                         Student stu= ite.next();
  29.                         String str= map.get(stu);//获取值
  30.                         System.out.println(stu+"....."+str);//输出学生信息
  31.                 }
  32.                
  33.                   //第二种方法entrySet
  34.                 Set<Map.Entry<Student, String>>  entryset= map.entrySet();//用entrysetSet方法将map存到Set集合中
  35.                
  36.                 Iterator<Map.Entry<Student, String>> it =entryset.iterator();//迭代器方法
  37.                
  38.                 while(it.hasNext())
  39.                 {
  40.                         Map.Entry<Student, String> mm=it.next();
  41.                        
  42.                         Student s= mm.getKey();//获取键
  43.                         String str= mm.getValue();//获取值
  44.                        
  45.                         System.out.println(s+".............."+str);//输出学生信息
  46.                 }
  47.         }
  48. }


  49. class Student implements Comparable<Student>//Student类
  50. {
  51.         private String name;
  52.         private int age;
  53.        
  54.         Student (String name, int age)//构造函数
  55.         {
  56.                 this.name= name;
  57.                 this.age= age;
  58.         }
  59.        
  60.         public int compareTo  (Student s) //此例子中无效,为了让元素适应二叉树结构
  61.         {
  62.                 int  num=  new Integer (this.age).compareTo(s.age);
  63.                 if(num==0)
  64.                         return this.name.compareTo(s.name);
  65.                 return num;
  66.         }
  67.        
  68.         public int  HashCode()//重写哈希表的HashCode方法
  69.         {
  70.                 return name.hashCode()+age*98;       
  71.         }
  72.        
  73.         public boolean equals (Object obj)//重写哈希表的equals方法
  74.         {
  75.                 if(!(obj instanceof Student))
  76.                         throw  new ClassCastException ("类型异常");
  77.                
  78.                 Student s = (Student )obj;
  79.                
  80.                 return this.name.equals(s.name)  &&  this.age==s.age ;               
  81.         }
  82.        
  83.         public String  getName()
  84.         {
  85.                 return name;
  86.         }
  87.         public int getAge ()
  88.         {
  89.                 return age;
  90.         }
  91.        
  92.         public String toString ()
  93.         {
  94.                 return name+":"+age;
  95.         }
  96.        
  97. }
复制代码

运行结果

  1. zs3:23.....上海
  2. zs1:21.....南京
  3. zs1:21.....北京
  4. zs2:22.....天津
  5. zs4:24.....深圳
  6. zs3:23..............上海
  7. zs1:21..............南京
  8. zs1:21..............北京
  9. zs2:22..............天津
  10. zs4:24..............深圳
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马