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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李红亮 于 2013-12-17 23:43 编辑

程序是这样的:
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

class GenericDemo2
{
        public static void main(String[] args)
        {
                TreeSet<String> ts = new TreeSet<String> (new StringLengthComparator());
                ts.add("abcd");
                ts.add("cc");
                ts.add("cba");
                ts.add("aaa");
                ts.add("z");
                ts.add("hahaha");
                for(Iterator<String> it = ts.iterator(); it.hasNext() ;)
                {
                        String s = it.next();
                        System.out.println(s);
                }
        }
}

class StringLengthComparator implements Comparator<String>
{
        public int compare(String o1 , String o2)
        {
                int num = new Integer(o1.length()).compareTo
                (new Integer(o2.length()));
                if(num == 0)
                        return o1.compareTo(o2);
                        return num;
        }
}

我的疑问是:如果想把字符串按照由长到短打印出来,为什么把o1和o2对象的顺序倒过来就行了?是什么原理?我想不出来,各位大神解析下。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

6 个回复

倒序浏览
int num = new Integer(o1.length()).compareTo(new Integer(o2.length()));
这句语句,当o1和o2两个对象调换的时候,num的值正负情况与不调换之前相反
因此比较情况就相反了
回复 使用道具 举报
風諾 发表于 2013-12-17 20:29
int num = new Integer(o1.length()).compareTo(new Integer(o2.length()));
这句语句,当o1和o2两个对象调 ...

不是很懂,能说的更通俗点吗
回复 使用道具 举报
風諾 发表于 2013-12-17 20:29
int num = new Integer(o1.length()).compareTo(new Integer(o2.length()));
这句语句,当o1和o2两个对象调 ...

是不是比较完后,如果返回正数,排序就按升序排?返回负数就按降序排?
回复 使用道具 举报
你不记得视频了吗?什么是二叉树,二叉树的结构是什么,比较结果为负数放左边,为正数放右边,然后先序遍历二叉树(通俗讲就是从左往右遍历)。
反过来就是比较结果为正数放左边,为负数放右边,同样是先序遍历二叉树,相当于第一个二叉树的后序遍历(即从右往左 遍历),就是反过来的意思了。
如果想详细了解,看《数据结构》,里面最基础的内容。
回复 使用道具 举报
衣带赞 发表于 2013-12-17 22:32
你不记得视频了吗?什么是二叉树,二叉树的结构是什么,比较结果为负数放左边,为正数放右边,然后先序遍历 ...

你这样说就有点明白了,回头我看看数据结构,谢了。
回复 使用道具 举报

办户口,代办双重户口,办理超生小孩户口,黑户口

本机构成立以来,为全国30多个省市的客户办理计划外的生育入户,办理所在地真实户口,可享受当地的各方福利,保险,就业等,办理需求多重身份证真实身份证的人群提供过帮助,取得了优秀的成绩。有着丰富的操作经验,在全国各地吸收了众多的优秀关系人群。在各方人才储备实力上,我们有着全国最好的人脉关系网和社会政府教育界人才,我们的宗旨是服务于大家,创一流的信誉和优质的服务。
QQ:84213788:http://www.hx3858.com/
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马