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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 皮卫凯 中级黑马   /  2012-9-15 17:57  /  1201 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 皮卫凯 于 2012-9-15 20:57 编辑

public int compareTo(Object obj)
{  
              
             if(!(obj instanceof Student))               / /如果对象不是指向学生
                     throw new RuntimeException("不是学生对象");
             Student s = (Student)obj;                / /把obj对象 强转成学生
              System.out.println(this.name+"....compareto....."+s.name);
  
            if(this.age>s.age)
                       return 1;       //这个return1 是返回到哪里去。
           if(this.age==s.age)
                {
                        return this.name.compareTo(s.name);
                 }
                         return -1;   //返回-1,是返回false的意思。那上面返回的1,是返回true的意思么,为什么不是返回值1,它不是一个具体的值么。
}

谢谢各位,我查api明白了
int compareTo(Object o): 比较当前实例对象与对象o,如果位于对象o之前,返回负值,如果两个对象在排序中位置相同,则返回0,如果位于对象o后面,则返回正值

int compare(Object o1, Object o2): 对两个对象o1和o2进行比较,如果o1位于o2的前面,则返回负值,如果在排序顺序中认为o1和o2是相同的,返回0,如果o1位于o2的后面,则返回正值

评分

参与人数 1黑马币 +10 收起 理由
刘芮铭 + 10 这位同学可以平时多查阅API文档.

查看全部评分

4 个回复

倒序浏览
因为Comparable和Comparator比较对象的目的是为了排序的
有3种可能,大于 小于 等于
而boolean只有2种可能  true  false
回复 使用道具 举报
因为你使用的TreeSet集合,所以你返回值全部给集合使用了,里面的数据结构是二叉树结构,根据返回一个值来进行排序。
回复 使用道具 举报
在此处你重写的compareTo方法目的就是比较两者的关系。
其中两者的关系有大于,等于,还有小于。
但是如果是使用Boolean来当做返回值,其只有true和false两个值,因此java中使用了1,0,-1来表示大于,等于,小于三种方式。
至于你说的return 1返回到哪里那肯定是调用方法的地方去了
回复 使用道具 举报
谢谢各位,我查api明白了
int compareTo(Object o): 比较当前实例对象与对象o,如果位于对象o之前,返回负值,如果两个对象在排序中位置相同,则返回0,如果位于对象o后面,则返回正值

int compare(Object o1, Object o2): 对两个对象o1和o2进行比较,如果o1位于o2的前面,则返回负值,如果在排序顺序中认为o1和o2是相同的,返回0,如果o1位于o2的后面,则返回正值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马