package tv.zhangjia.tv;import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;class DescSort implements Comparator<String> {
public int compare(String s1, String s2) {
if (s1.compareTo(s2) > 0)
return -1;
else if (s1.compareTo(s2) < 0)
return 1;
else
return 0;
}
}public class ComparatorDemo {
public static void main(String[] args) {
String[] s = new String[] { "Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat" };
Set<String> ts = new TreeSet<String>();
for (int i = 0; i < s.length; i++)
ts.add(s[i]);
System.out.println(ts);
Comparator<String> comp = new DescSort();
ts = new TreeSet<String>(comp);
for (int i = 0; i < s.length; i++)
ts.add(s[i]);
System.out.println(ts);
}
}
输出:
[Fri, Mon, Sat, Sun, Thur, Tue, Wed]
[Wed, Tue, Thur, Sun, Sat, Mon, Fri]
代码如上,有以下几个问题:
问题一:请问,为什么输出的时候第一次是按照升序排序,第二次是按照降序排序的?这里的compar方法应该只提供了降序的作用呀?
问题二:new TreeSet<String>(comp);和new TreeSet<String>();有什么不同呢?
希望大神们能讲的具体一些,深入一些