本帖最后由 李红亮 于 2013-12-17 23:43 编辑
程序是这样的:
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
class GenericDemo2
{
public static void main(String[] args)
{
TreeSet<String> ts = new TreeSet<String> (new StringLengthComparator());
ts.add("abcd");
ts.add("cc");
ts.add("cba");
ts.add("aaa");
ts.add("z");
ts.add("hahaha");
for(Iterator<String> it = ts.iterator(); it.hasNext() ;)
{
String s = it.next();
System.out.println(s);
}
}
}
class StringLengthComparator implements Comparator<String>
{
public int compare(String o1 , String o2)
{
int num = new Integer(o1.length()).compareTo
(new Integer(o2.length()));
if(num == 0)
return o1.compareTo(o2);
return num;
}
}
我的疑问是:如果想把字符串按照由长到短打印出来,为什么把o1和o2对象的顺序倒过来就行了?是什么原理?我想不出来,各位大神解析下。
|