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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不怕黑人 中级黑马   /  2015-7-25 13:21  /  172 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package fuxi1;

  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.Map;
  5. import java.util.Set;

  6. /**
  7. * 题目:每一个学生都有对应的归属地,学生Student,归属地String,学生有属性姓名和年龄,属性相同视为同一个学生。保证学生的唯一性。
  8. * 思路:1.先描述学生,因为要确保唯一性,所以要用HashMap集合,学生类中要覆盖hashCode()和equals()方法。
  9. * 2.定义Map集合,将学生和归属地作为键值存入
  10. * 3.获取集合中的元素
  11. *@author XiaLei
  12. */
  13. public class Day16Test4 {

  14.         public static void main(String[] args) {
  15.                 Students st1 = new Students("java01",5);
  16.                 Students st2 = new Students("java02",2);
  17.                 Students st3 = new Students("java04",4);
  18.                 Students st4 = new Students("java01",5);
  19.                 String addr1 = st1.diZhi("BeiJin01");
  20.                 String addr2 = st1.diZhi("BeiJin02");
  21.                 String addr3 = st1.diZhi("BeiJin03");
  22.                 String addr4 = st1.diZhi("BeiJin04");
  23.                
  24.                 Map<Students,String> m = new HashMap<Students,String>();
  25.                 m.put(st1,addr1);
  26.                 m.put(st2,addr2);
  27.                 m.put(st3,addr3);
  28.                 m.put(st4,addr4);
  29.                 //entrySet取出方式:
  30.                 Set<Map.Entry<Students,String>> s = m.entrySet();
  31.                 Iterator<Map.Entry<Students,String>> it = s.iterator();
  32.                 while(it.hasNext()){
  33.                         Map.Entry<Students, String> me = it.next();
  34.                         Students key = me.getKey();
  35.                         String value = me.getValue();
  36.                         System.out.println(key+"="+value);
  37.                         }
  38.                 //keySet取出方式:
  39.                 Set<Students> st = m.keySet();
  40.                 for(Iterator<Students> its =st.iterator();its.hasNext();){
  41.                         Students key1 = its.next();
  42.                         String value1 = m.get(key1);
  43.                         System.out.println(key1+"="+value1);
  44.                 }
  45.         }

  46. }
  47. class Students implements Comparable<Students>{//实现Comparable接口,让Students类具有自然顺序。
  48.         private String name;
  49.         private int age;
  50.         public Students(String name, int age) {
  51.                 super();
  52.                 this.name = name;
  53.                 this.age = age;
  54.         }
  55.         public String diZhi(String addr){
  56.                 return addr;
  57.         }

  58.         public String getName() {
  59.                 return name;
  60.         }

  61.         public int getAge() {
  62.                 return age;
  63.         }
  64.         public int compareTo(Students s){
  65.                 int num = this.age-s.age;
  66.                 if(num==0){
  67.                         return this.name.compareTo(s.name);
  68.                 }
  69.                 return num;
  70.         }
  71.         public int hashCode(){
  72.                 return name.hashCode()+age*39;
  73.         }
  74.         public boolean equals(Object obj){
  75.                 if (!(obj instanceof Students))
  76.                         throw new RuntimeException("类型不匹配");//注意异常的使用,这里如果return false;没有意义 所以要抛出一个运行时异常。
  77.                 Students st = (Students)obj;
  78.                 return this.name.equals(st.name) && this.age==st.age;
  79.         }
  80.         public String toString(){
  81.                 return "name:"+name+"...age:"+age;
  82.         }
  83. }
复制代码

0 个回复

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