public class TreeSetTest {
/**
* 按照字元串長度排序
*/
public static void main(String[] args) {
TreeSet ts=new TreeSet(new MyComp2());
ts.add("abcd");
ts.add("baca");
ts.add("aead");
ts.add("cc");
ts.add("z");
ts.add("hahaha");
ts.add("hag");
Iterator ite=ts.iterator();
while(ite.hasNext()){
String s=(String)ite.next();
System.out.println(s);
}
}
}
//主要條件滿足時再判斷一下次要條件
class MyComp2 implements Comparator{
/*@Override
public int compare(Object o1,Object o2){
if(!(o1 instanceof String && o2 instanceof String))
throw new RuntimeException("執行個體對象不符");
String s1=(String)o1;
String s2=(String)o2;
if(s1.length()>s2.length())
return -1;
if(s1.length()==s2.length()){ //除了要判斷字元串長度以外還要判斷字元串
// return 0;
return s1.compareTo(s2); //按照字元串進行比較一次
}
return 1;
} 第一種方式*/
//第二種方式
@Override
public int compare(Object o1,Object o2){
if(!(o1 instanceof String && o2 instanceof String))
throw new RuntimeException("執行個體對象不符");
String s1=(String)o1;
String s2=(String)o2;
//Integer包裝類也可以進行比較的
//我們使用它來比較兩個字元串的長度然後将傳回值直接傳回
int num=new Integer(s1.length()).compareTo(new Integer(s2.length()));
if(num==0)
return s1.compareTo(s2); //如果長度=0則讓兩個字元串進行比較。這個是按字典的順序進行比較的
return num;
}
}