最代碼廣告位
zyjcxc的gravatar頭像
zyjcxc2016-04-28 00:22:54

java通過Comparable接口實現字符串比較大小排序的簡單實例

/**
 *	對象比較大小compare的用法 字符串排序
 *	練習代碼, 給定字符串" nba" "cba" "ncaa" "wba" ...	
	
	思路: 
	1.排序,想到數組的排序.數組排序想到選擇排序,或者冒泡排序
	2.用數組排序的思路做此題.(字符串同理)
	3.遍歷數組,比較每一個元素與下一個元素的大小關系
	4.最后交換兩個元素位置
	5.輸出結果
	
	經過學習總結:
	1.String本身是不具備比較大小功能的,但是由于String對象實現了
	Comparable的接口.這個接口是可比較功能的接口.這里定義了比較方法compareTo方法.
	Api手冊中的描述:
	此接口強行對實現它的每個類的對象進行整體排序。
	這種排序被稱為類的自然排序,類的 compareTo 方法被稱為它的自然比較方法
	
	2.所以如果我們定義了一個類,這個類產生的對象,想要比大小時,我們就不用自己寫方法了,
	直接實現Comparable接口,重寫compareTo方法就可以了.注:本題中String類已經重寫了
	comparTo方法.
	
	3.
	該方法比較對象 與 指定對象的 順序
	寫法: 
	campareTo(T o); 
	返回值: int  返回 0(兩者相等),負數(對象小于參數),正數 (對象大于參數) 
	參數:   o 為要比較的對象

 */
public class CompareTo{

	public static void main(String[] args) {
		String[] str = {"nba","cba" ,"ncaa" ,"wba","ccba","abc"};
		printArr(str);	
		strSort(str);		//練習排序方法
//		Arrays.sort(str);	排序用法
		printArr(str);
		
	}
	
	/**
	 * 對字符串進行由小到大排序
	 * @param str	String[] 需要排序的字符串數組
	 */
	public static void strSort(String[] str){
		for (int i = 0; i < str.length; i++) {
			for (int j = i+1; j < str.length; j++) {
				if(str[i].compareTo(str[j])>0){	//對象排序用camparTo方法
					swap(str,i,j);
				}
			}
		}
		
	}
	/**
	 * 交換兩個元素的位置的方法
	 * @param strSort	需要交換元素的數組	
	 * @param i	索引i
	 * @param j 索引j
	 */
	private static void swap(String[] strSort, int i, int j) {
		String t = strSort[i];
		strSort[i] = strSort[j];
		strSort[j] = t;
	}
	/**
	 * 打印字符串數組
	 * @param str
	 */
	private static void printArr(String[] str) {
		for (int i = 0; i < str.length; i++) {
			System.out.print(str[i]+"\t");
		}
		System.out.println();
	}


}
最代碼廣告位

打賞

頂部客服微信二維碼底部
>掃描二維碼關注最代碼為好友掃描二維碼關注最代碼為好友
2008大乐透走势图