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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.util.*;
  2. class Student implements Comparable<Student>
  3. {
  4. private String name;
  5. private int no;
  6. Student(int no,String name)
  7. {
  8. this.no = no;
  9. this.name = name;

  10. }

  11. public int compareTo(Student s)
  12. {
  13. int num = new Integer(this.no).compareTo(new Integer(s.no));
  14. if (num==0)
  15. {
  16. return this.name.compareTo(s.name);
  17. }
  18. return num;
  19. }

  20. public int hashCode()
  21. {
  22. return 1;
  23. }

  24. public boolean equals(Object obj)
  25. {
  26. if(!(obj instanceof Student))
  27. throw new ClassCastException("您输入的与所需类型不匹配");

  28. Student s =(Student)obj;
  29. return this.no==s.no && this.name.equals(s.name);//

  30. }

  31. public String getName()
  32. {
  33. return name;
  34. }
  35. public int getNo()
  36. {
  37. return no;
  38. }
  39. public String toString()
  40. {
  41. return "no:"+no+" name:"+name;
  42. }

  43. }

  44. class StudentNoComparator implements Comparator<Student>
  45. {
  46. public int compare(Student s1,Student s2)
  47. {

  48. return s1.compareTo(s2);
  49. }
  50. }

  51. class Noname3
  52. {
  53. public static void main(String[] args)
  54. {
  55. TreeMap<Student,Integer> hm = new TreeMap<Student,Integer>(new StudentNoComparator());//
  56. hm.put(new Student(04,"student4"),24);
  57. hm.put(new Student(02,"student2"),22);
  58. hm.put(new Student(03,"student3"),23);
  59. hm.put(new Student(01,"student1"),21);
  60. hm.put(new Student(05,"student5"),25);

  61. System.out.println();

  62. Set<Map.Entry<Student,Integer>> entrySet = hm.entrySet();
  63. Iterator<Map.Entry<Student,Integer>> iter = entrySet.iterator();
  64. while (iter.hasNext())
  65. {
  66. Map.Entry<Student,Integer> me = iter.next();
  67. Student stu = me.getKey();
  68. Integer age = me.getValue();
  69. System.out.println(stu+" age:"+age);
  70. }
  71. }
  72. }
复制代码

5 个回复

倒序浏览
没有问题吗?
回复 使用道具 举报

没有遇见问题呀,就是一下午时间都是用在处理问题所以觉得写出来不易,
贴上来供大家交流交流。:lol
回复 使用道具 举报
那你要说说你遇到什么问题了呀,不然只看结果问题都不知道看不出来什么
回复 使用道具 举报
草貌路飞 发表于 2013-8-5 18:11
那你要说说你遇到什么问题了呀,不然只看结果问题都不知道看不出来什么

比如说我之前输入是按照顺序输入的,用的是HashMap,但是因为它是栈的形式存储的,输出也就按照学号从大到小的顺序输出了。因为才看这方面视频,所以当我添加comparator接口的时候,编译出现了错误。后来自习研究才发现TreeMap才能使用比较器,而HashMap不行。其它的问题倒是不是特别大,主要就是这个Map选择的问题啦。希望能与你互相学习学习。:)
回复 使用道具 举报
breaveheart 发表于 2013-8-5 18:19
比如说我之前输入是按照顺序输入的,用的是HashMap,但是因为它是栈的形式存储的,输出也就按照学号从大到 ...

哦。。说了就知道了:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马