双列集合(Map)

选择某种Map集合保存学号从1到15的学员的学号(键)和姓名(值),学号用字符串表示,输入的时候要以学号乱序的方式存入Map集合,然后按照学号从大到小的顺序将Map集合中的元素输出打印。需要自定义Map集合的比较器Comparator,因字符串对象的大小比较是按字典序,而非对应的数值。

要求:必须使用Map集合的内部排序机制进行排序,不能在外部排序。

(1)代码实现

[java]  view plain  copy
  1. import java.util.*;  
  2.   
  3. public class MapTest {  
  4.   
  5.     public static void main(String[] args) {  
  6.         //创建map对象  
  7.         TreeMap tm  =new TreeMap(new MyComparator());  
  8.         //存储键和值  
  9.         tm.put("1006""政焕");  
  10.         tm.put("1003""子墨");  
  11.         tm.put("1002""伯懿");  
  12.         tm.put("1004""在凡");  
  13.         tm.put("1005""炎彬");  
  14.         tm.put("1015""瑾瑜");  
  15.         tm.put("1001""恩畅");  
  16.         tm.put("1009""真熙");  
  17.         tm.put("1010""智熙");  
  18.         tm.put("1008""胜恩");  
  19.         tm.put("1014""幼林");  
  20.         tm.put("1011""贞贤");  
  21.         tm.put("1007""秀智");  
  22.         tm.put("1012""孝琳");  
  23.         tm.put("1013""敏智");  
  24.         //获取键的集合  
  25.         Set keySet=tm.keySet();  
  26.         //获得迭代器对象  
  27.         Iterator it=keySet.iterator();  
  28.         while(it.hasNext()) {  
  29.             //获得键值  
  30.             Object key=it.next();  
  31.             //获取键对应的值  
  32.             Object value=tm.get(key);  
  33.             //输出键和值  
  34.             System.out.println(key +":"+value);  
  35.         }  
  36.     /* 或者通过foreach访问 键和值 
  37.          for(Object key: tm.keySet()){ 
  38.          
  39.          System.out.println(key+" "+tm.get(key)); 
  40.          } 
  41.         */   
  42.     }  
  43.   
  44. }  
  45. //自定义比较器MyComparator  
  46. class MyComparator implements Comparator{  
  47.   
  48.     public int compare(Object b1, Object b2) {  
  49.         String s1=(String)b1;  
  50.         String s2=(String)b2;  
  51.         return s2.compareTo(s1);  
  52.     }  
  53.       
  54. }  

(2)运行结果

[java]  view plain  copy
  1. 1015:瑾瑜  
  2. 1014:幼林  
  3. 1013:敏智  
  4. 1012:孝琳  
  5. 1011:贞贤  
  6. 1010:智熙  
  7. 1009:真熙  
  8. 1008:胜恩  
  9. 1007:秀智  
  10. 1006:政焕  
  11. 1005:炎彬  
  12. 1004:在凡  
  13. 1003:子墨  
  14. 1002:伯懿  
  15. 1001:恩畅  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值