1. 程式人生 > >java中的字串排序

java中的字串排序

要求:對  "abc","fcc","egfd","asd","rtgh","deghk","fcc"欄位進行排序,要求滿足其為升序排列同時每個字串裡也是升序排列     

public class Test {

            public static void main(String[] args) {

String[] str  = new String[]{"abc","fcc","egfd","asd","rtgh","deghk","fcc"};

//   一   ,氣泡排序   (思路:先獲取字串數組裡的每個字串,然後使用toCharArray()方法得到這個字串的char[] 再對char數

        //組裡的元素進行對比,氣泡排序前面大的與後面交換順序,再把得到的char陣列重新轉換為String,存入到一個新的String

        //陣列中,然後在整體對新陣列中各個字串使用氣泡排序從而得到結果)

     printArr(stringRank(test(str)));

//    二     使用 Arrays.sort(s);方法進行排序

               String[] s = sortChar(str);
Arrays.sort(s);
printArr(s);

    }

}

//得到一個每個字串裡元素已經進行過排序的新字串陣列

     private static String[] test(String[] str){
    String st[] =  st = new String[str.length];
    for (int i = 0; i < str.length; i++) {
char[] c =  str[i].toCharArray();
charRank(c);
String s = new String(c);
st[i]  = s;
}
    return st;

     }

//對字串裡元素進行排序

  private static void charRank(char[] c){
    for (int j = 0; j < c.length; j++) {
for (int j2 = 0; j2 < c.length-j-1; j2++) {
if(c[j2]>c[j2+1]){
char len = c[j2];
c[j2] = c[j2+1];
c[j2+1] = len;
}
}
}

     }

//對新字串數組裡的字串進行排序(升序)字串比較使用compareTo()方法

//String本身並不具備比較大小功能,它的String物件實現了Comparable介面,這個介面是具有比較大小功能的介面,裡面定義了比較方法compareTo()方法

//所以如果我們定義了一個類,這個類產生的物件需要比較大小就需要去實現Comparable介面,重寫compareTo()方法,這種

//排序成為類的自然排序,compareTo()方法稱為自然比較方法,因為String類已經實現了compareTo()方法,所以這裡可以

//直接使用

//該方法的比較物件與指定物件的順序

//compareTo(T  o)     返回值:int  返回0(兩者相等),負數(物件小於引數),正數(物件大於引數)     引數o為要比較的物件

private static String[] stringRank(String[] str) {


for (int i = 0; i < str.length; i++) {
for (int j = 0; j < str.length - i - 1; j++) {
if (str[j].compareTo(str[j + 1]) > 0) {
String s = str[j];
str[j] = str[j + 1];
str[j + 1] = s;
}
}
}
return str;
}

private static String[] sortChar(String[] str) {
String[] s = new String[str.length];
for (int i = 0; i < str.length; i++) {
char[] c = str[i].toCharArray();
Arrays.sort(c);
s[i] = String.valueOf(c);
}
return s;
}

private static void printArr(String[] str){
for (int i = 0; i < str.length; i++) {
System.out.print(str[i]+"\t");
}
System.out.println();
}