本帖最后由 孙利川 于 2012-4-7 14:28 编辑
public int compareTo(Object o){
PersonTwo p=(PersonTwo)o;
int lastCmp=lastName.compareTo(p.lastName); //这里为什么要定义一个lastCmp呢
//它的作用是先把lastName字段的比较结果保存起来,如果为零再比较另一字 段。
return (
lastCmp!=0?lastCmp:firstName.compareTo(p.firstName));//这句完全不理解
//这句代码的意思是,如果lastCmp不为零则返回lastCmp,如果为零则返回firstName.compareTo(p.fisrtName),即如果lastName字段的值不同就返回lastName字段的比较结果,如果相同就断续比较firstName字段,并返回该字段的比较结果。
//这个老毕的视频里有,比较两个对象时,如果第一个字段的值相等,再断续比较第二个字段,甚至如果第二个字段的值相等再比较第三个字段。lastCmp!=0?lastCmp:firstName.compareTo(p.firstName));这句使用的是三元运算符:A?B:C ,如果A的值是true则返回B,如果A的值为false则返回C,在本句代码中,A是lastCmp!=0,B是lastCmp,C是firstName.compareTo(p.firstName)。可以这样写:(lastCmp!=0)?lastCmp:firstName.compareTo(p.firstName)); |