这儿使用了集合框架工具类 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());
}
}
}