黑马程序员技术交流社区

标题: 为什么我上面不加引用程序对象也能运行 [打印本页]

作者: 费破的可    时间: 2013-10-31 12:46
标题: 为什么我上面不加引用程序对象也能运行
本帖最后由 费破的可 于 2013-10-31 14:02 编辑

import java.util.*;
class  TreeSetTest
{
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet(new StrLenComparator() );//为什么这里不加new StrLenComparator()程序也能运行???
                ts.add("assa");
                ts.add("afffa");
                ts.add("ccaa");
                ts.add("wwaa");
                ts.add("wwaa");
                ts.add("adfsf");
                Iterator it = ts.iterator();
                while(it.hasNext())
                {
                        System.out.println(it.next());
                }
        }
}
class StrLenComparator implements Comparator
{
        public int compare(Object o1,Object o2)
        {
        String s1 = (String)o1;
        String s2 = (String)o2;
        int num = new Integer(s1.length()).compareTo(new Integer(s2.length()));
        if(num==0)
                        return s1.compareTo(s2);
        return num;
}
}


作者: 落木萧萧    时间: 2013-10-31 13:48
TreeSet有四种构造函数,楼主用的是TreeSet(Comparator<? super E> comparator),也就是在new 的时候指定一个comparator。如果不加comparator,那就是new的空的构造函数,也是可以的,只是没有指定comparator,不能在add的时候进行排序。




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