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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 任振铭 中级黑马   /  2015-10-12 01:01  /  278 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么s2-s1打印从大到小,s1-s2打印从小到大,请说的详细点

import java.util.Comparator;
import java.util.TreeSet;

public class Text28 {
        public static void main(String[] args) {
                TreeSet<String> treeSet = new TreeSet<>(new ComparatorDemo());
                treeSet.add("adf");
                treeSet.add("asdf");
                treeSet.add("adfd");
                treeSet.add("asd");
                treeSet.add("a");
                treeSet.add("ag");
                treeSet.add("fdffffffa");
                System.out.println(treeSet);
               
               
        }
}
class ComparatorDemo implements Comparator<String>{

        @Override
        public int compare(String s1, String s2) {
                int num = s2.length()-s1.length();    ////////////////////////////////////为什么s2-s1打印从大到小,s1-s2打印从小到大,请说的详细点
                return num == 0 ? s2.compareTo(s1):num;
        }
       
}

1 个回复

倒序浏览
* 调用的对象(就是当前存入的对象)是compare方法的第一个参数,集合中的对象(已经添加进去的对象)是compare方法的第二个参数     好好理解这句话,看下那个是做根节点对象调用这个方法, 那个是做比较后存入集合的对象.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马