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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭盼 中级黑马   /  2012-3-21 01:18  /  1738 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 彭盼 于 2012-3-21 01:25 编辑

请看这段代码:

public int compareTo(Object obj)
        {

               
                if(!(obj instanceof Student))
                        throw new RuntimeException("!!!");
                Student s = (Student)obj;

                System.out.println(this.name+"....compareto....."+s.name);
                if(this.age>s.age)
                        return 1;
                if(this.age==s.age)
                {
                        return this.name.compareTo(s.name);
                }
                return -1;
        }
这个方法是某类实现Comparable接口,覆盖compareTo方法,用来对Hashset元素进行排序的,为什么方法返回1就能够使系统按年龄大小给对象排序,这其中的详细的机制是怎样的,哪位高手解释下

4 个回复

倒序浏览
代码不全呀。
回复 使用道具 举报
compareTo
int compareTo(T o)比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
推荐 (x.compareTo(y)==0) == (x.equals(y)) 这种做法,但并不是 严格要求这样做。一般来说,任何实现 Comparable 接口和违背此条件的类都应该清楚地指出这一事实。推荐如此阐述:“注意:此类具有与 equals 不一致的自然排序。”
回复 使用道具 举报
compareTo是按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object) 返回 true 时才返回 0
回复 使用道具 举报
public int comparaTo(Object obj);

该方法:        返回0表示this==obj
        返回正数表示this>obj
          返回负数表示this<obj

或者另一种写法:
int i = this.age-s.age;
return i==0 ? this.name.compareTo(s.name) : i




回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马