public class TreeSetTest { /**
 * @param args
 */
public static void main(String[] args) {
TreeSet ts = new TreeSet(new StrLenComparator());
ts.add("a");
ts.add("abc");
ts.add("add");
ts.add("aasss");
ts.add("aadddd");
Iterator it = ts.iterator();
        while(it.hasNext())
         {
       System.out.println(it.next());
       }
}}class StrLenComparator implements Comparator
{ @Override
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;

}
}class Student 
{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student(String name,int age)
{
this.name = name;
this.age =age;
}
}问题1:为什么要在泛型后面加上new StrLenComparator();
问题2:为什么每增加一个元素,他总能调用compare方法????如果不写new StrLenComparator();就不能调用,为什么啊?