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

© 赵家阳 中级黑马   /  2012-12-3 18:25  /  1565 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵家阳 于 2012-12-6 16:47 编辑
  1. import java.util.*;
  2. public class TreeSetDemo {
  3.         public static void main(String[] args)
  4.         {        
  5.                 TreeSet ts = new TreeSet();
  6.                 Student st1 = new Student("wangwu001",21);
  7.                 Student st2 = new Student("langwu001",21);
  8.                 Student st3 = new Student("wangwu001",20);
  9.                 Student st4 = new Student("wangwu001",22);
  10.                 ts.add(st1);
  11.                 ts.add(st2);
  12.                 ts.add(st3);
  13.                 ts.add(st4);
  14.                 /*
  15.                 ts.add(new Student("lisi01",18));
  16.                 ts.add(new Student("lisi02",29));
  17.                 ts.add(new Student("lisd01",21));
  18.                 ts.add(new Student("misi01",18));
  19.                 ts.add(new Student("lssi01",19));
  20.                 */
  21.                 Iterator it = ts.iterator();
  22.                 while(it.hasNext())
  23.                 {
  24.                         Student st = (Student)it.next();
  25.                         System.out.println(st.getName()+"======"+st.getAge());
  26.                 }
  27.                
  28.         }
  29. }
  30. class Student implements Comparable
  31. {
  32.         private String name;
  33.         private int age;
  34.         Student(String name,int age)
  35.         {
  36.                 this.name = name;
  37.                 this.age  = age;
  38.         }
  39.         public String getName()
  40.         {
  41.                 return name;
  42.         }
  43.         public int getAge()
  44.         {
  45.                 return age;
  46.         }
  47.         public int compareTo(Object obj)
  48.         {
  49.                 if(!(obj instanceof Student))
  50.                 {
  51.                         throw new RuntimeException("不是学生对象");
  52.                 }
  53.                 Student st = (Student)obj;
  54.                 System.out.println(st.getName()+",......,.."+st.getAge());
  55.                 if(this.age >st.age)
  56.                 {
  57.                         return 1;
  58.                 }
  59.                 if(this.age == st.age)
  60.                 {
  61.                         return this.name.compareTo(st.getName());
  62.                 }
  63.                 return -1;
  64.         }
  65. }
复制代码
疑问:
   在上面两种创建对象的方式结果都是正确的,
   但是,在此处:public int compareTo(Object obj)   其中的obj并没有明确指定是哪个对象,CompareTo方法底层是怎么实现在
比较的过程中能与各个对象进行比较呢?
   求精讲!!!!

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
轻松过关 发表于 2012-12-3 20:01
TreeSet底层是TreeMap实现的,下面的代码是TreeMap中的put代码?
里面可以看出在你装入数据的是i和它调用了 ...

不好意思,这点还没有学到,暂时不能做回答! 不过还是谢谢了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马