天天看點

《黑馬程式員》 TreeSet集合練習之 按照字元串長度排序

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;
	}
}