黑马程序员技术交流社区

标题: compareTo 接口的实现 [打印本页]

作者: 小飞龙    时间: 2012-7-19 16:17
标题: compareTo 接口的实现
public int compareTo(Object o){
                PersonTwo p=(PersonTwo)o;
                int lastCmp=lastName.compareTo(p.lastName);  //这里为什么要定义一个lastCmp呢
                return (
                        lastCmp!=0?lastCmp:firstName.compareTo(p.firstName));//这句完全不理


哪位大哥能不能帮我翻译一下这段代码   看不太懂。
作者: 王龙彪    时间: 2012-7-19 16:29
  1. int lastCmp=lastName.compareTo(p.lastName);  //这里为什么要定义一个lastCmp呢
复制代码
因为比较肯定是两个对象或两个对象的属性才能比较嘛
后面那个就是被比较的对象属性
  1. lastCmp!=0?lastCmp:firstName.compareTo(p.firstName));//这句完全不理
复制代码
这是一个三元表达式,就相当于:
  1. if(lastCmp != 0)
  2.         return lastCmp;
  3. else
  4.         return firstName.compareTo(p.firstName));
复制代码

作者: rslheima    时间: 2012-7-19 16:35
public int compareTo(Object o){
                PersonTwo p=(PersonTwo)o;
                int lastCmp=lastName.compareTo(p.lastName);  //首先compareTo()返回的是个整型数,暂存到lastCmp中

                return (
                        lastCmp!=0?lastCmp:firstName.compareTo(p.firstName));//这句话:如果lastCmp不等于零,返回lastCmp ,等于零,返回firstName的比较结果
总之你这段代码的意思就是
先根据名字比较,进行排序
如果名字相同,就和姓名比较,根据姓名排序






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2