这儿使用了集合框架工具类 Collections的 reverSeOdrder() 及重载方法,一个是实现排序,一个是排序的反转,这样只需要写一个比较器就具有二个功能,而不需要写二个比较器,使用起来也是比较方法的,也有许多实现的地方。
import java.util.*; //按字母顺序排序 class Strcomparator implements Comparator<String> //比较 { public int compare(String str1,String str2) { //equals(); 返回布尔 //compareTo(String anotherString) //按字典顺序比较两个字符串。 return str1.compareTo(str2); } } //按字符串长度排序 class StrLengthComparator implements Comparator<String> { public int compare(String str1,String str2) { int length = str1.length() -str2.length(); if(length>0) return 1; if(length<0) return -1; return length; } } class CollectionsDemo2 { public static void main(String[] args) { orderDemo(); } public static void orderDemo() { //TreeSet<String> ts = new TreeSet<String>(); //增加自己写的比较器 //TreeSet<String> ts = new TreeSet<String>(new Strcomparator()); //集合框架中的方法 //public static <T> Comparator<T> reverseOrder() //返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。 //TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder()); //按长度排序,从短到长。 //TreeSet<String> ts = new TreeSet<String>(new StrLengthComparator()); //如果要按从长到的排序, //方法一:改上面使用的比较器。 //reverseOrder(); 有个重载方法 //方法二:public static <T> Comparator<T> reverseOrder(Comparator<T> cmp) //返回一个比较器,它强行逆转指定比较器的顺序。 TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new StrLengthComparator())); ts.add("abcde"); ts.add("aaa"); ts.add("kk"); ts.add("bbb"); ts.add("adfsadfasf"); ts.add("a"); Iterator it = ts.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } }