原始编码(已经正确):
package onlyfun.caterpillar;
import java.util.*;
public class TreeSetDemo{
public static void main(String[]args){
Set<String> set = new TreeSet<String>();
//input
set.add("zhang");
set.add("wen");
set.add("qiang");
set.add("wen");
//output
for(String name:set)
System.out.print(name+" ");
System.out.println();
}
}
//输出结果确实按照字典排序
//由于TreeSet加入的String对象执行时自动按照字典顺序进行排序,所以下面的程序 --实现反序
//作用:设置compare方法改变TreeSet的顺序
package onlyfun.caterpillar;
import java.util.Comparator;
public class CustomComparator<T> implements Comparator<T>{
@SuppressWarnings("unchecked")
public int compare(T o1,T o2){
if( (o1).equals(o2) ) //为什么用T
return 0;
return ((Comparable<T>)o1 ).compareTo((T) o2)*-1;//为什么用(Comparator<T>)o1
}//为什么*-1就可以反序?怎么反序的?
}
//程序
package onlyfun.caterpillar;
import java.util.*;
public class TreeSetDemo2{
public static void main(String[]args){
Comparator<String> comparator = new CustomComparator<String>();
Set<String> set = new TreeSet<String>(comparator);//怎么连接在一起的?看不懂a
//input
set.add("zhang");
set.add("wen");
set.add("qiang");
set.add("wen");
//output
for(String name:set)
System.out.print(name+" ");
System.out.println();
}
}
------解决思路----------------------
a compare b 结果为0表示相等,-1表示a<b,1表示a>b
正常ThreeSet会判断-1的放前面,1的放后面,这样就是升序排序了
把compare的结果乘以-1,排序的时候就降序了