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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 励志Java_鸿政 中级黑马   /  2015-1-10 14:29  /  1588 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.Comparator;
public class StringLengthComparator implements Comparator<String> {
        public int compare(String s1, String s2) {
                int length = s1.length() - s2.length();
                return length==0?s1.compareTo(s2):length;
        }

}
最后的三元运算符的意思:我的理解如果两个字符串的长度相等就进行自然顺序比较s1,s2谁靠前就返回谁(比如abc和bac,就返回abc),如果长度不一样,就返回length!!

最后这个length 就 懵了  不懂!返回的是长度?还是字符串还是什么?求理解

5 个回复

倒序浏览
我给你解释吧。  return length==0?s1.compareTo(s2):length;  首先0? 就决定了,使用的后面那个,length。所以返回的就是 int length。 三目运算是这样的:真还是假?如果真就用这个表达式:如果假就用这个表达式
回复 使用道具 举报 1 0
最后的意思是,如果字符串的长度相等就,再调用字符串自己的compareTo方法比较自然顺序,其返回值可能是1,-1,0;如果不相等,就返回长度差,这个长度差可能大于1,也可能小于-1,
回复 使用道具 举报
潘耿威 发表于 2015-1-10 14:37
我给你解释吧。  return length==0?s1.compareTo(s2):length;  首先0? 就决定了,使用的后面那个,length。 ...

恩 , 有点儿那么个意思了  我自己再琢磨琢磨
回复 使用道具 举报
本帖最后由 zhangyaya 于 2015-1-10 15:46 编辑

length 就是长度差,return返回的是个整数。整个函数的功能是比较s1与s2的大小——比长度,长度相同比自然序——s1<s2 就是负数,s1>s2就是正数,完全相同就是0.  该函数的返回值只有正负号和0有意义,具体是数值没啥意义,因为  s1=“ab” s2=“abc” 与  s1=“abc”s2=“abd” 都返回-1 ,不能说s1比s2长度小1, 只能说s1小于s2这样个事实。
回复 使用道具 举报 1 0
zhangyaya 发表于 2015-1-10 15:40
length 就是长度差,return返回的是个整数。整个函数的功能是比较s1与s2的大小——比长度,长度相同比自然 ...

恩,妥了!这个清晰了。谢啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马