/** * 對象比較大小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(); } }