2012-11-01 42 views
2

我正在學習JAVA,並且對排序字符串有疑問。使用空格對字符串值進行排序

在字符串的ArrayList 我們有字符串值結構是 「0」 + 「」 + 「一些字符串」

例如,

 | String 
    | 0 AA 
    | 1 BB 
    | 2 AA 
    | 3 AA 
    | 4 CC 
    | 5 BB 

當我們對它進行排序,結果應該是

 | String 
    | 0 AA 
    | 2 AA 
    | 3 AA 
    | 1 BB 
    | 5 BB 
    | 4 CC 

我該如何使用「num BER字符串」 + 「」 + 「字符串」

感謝

更新:

我測試代碼吹塑與 1 AA
2 AA
3 BBB
4 CC
5 BBB
6 AA
7 BBB
8 CC
9 ZZZ
10 QQQ

和我

0 AA

1 AA

5 AA

4 BBB

2 BBB

6 BBB

3 CC

7 CC

9 QQQ

8 ZZZ

+0

OP,請未接受我的答案,並接受ARS張貼其高度的答案高效然後我的,這樣我可以刪除我的答案。:) – PermGenError

回答

-4

我在編碼時確實考慮了空間和時間的複雜性。我並不確定它是否足夠高效,但它會給你帶來意想不到的效果。

List<String> l = new ArrayList<>(); 

     l.add("0 CC"); 
     l.add("1 BB"); 
     l.add("2 AA"); 
     l.add("3 AA"); 

    String str=""; 
    for(String s: l){ 
     str+=s+","; 
    } 
    String[] sArr = str.split(","); 
    String temp=""; 
    for(int i=0; i<sArr.length;i++) { 
     for(int j= i+1; j<sArr.length;j++){ 
      if(sArr[i].split("\\s")[1].compareToIgnoreCase(sArr[j].split("\\s")[1])>0){ 
       temp= sArr[j]; 
       sArr[j]= sArr[i]; 
       sArr[i]=temp; 
      } 
     } 
    } 
    for(String g: sArr){ 
     System.out.println(g); 
    } 

output: 
2 AA 
3 AA 
1 BB 
0 CC 
+2

這是一個非常糟糕的解決方案。事實上,我懷疑它適用於所有情況! – Muel

+0

@Muel它確實爲給定的輸入工作。你可以建議任何其他的解決方案??? idint真的考慮空間和時間的複雜性,而編碼它 – PermGenError

+0

可以downvoters請評論 – PermGenError

4

使用Collections.sort(List, Comparator)。你需要提供你自己的Comparator實現,它實現你的分類需求。

7

擴大於Comparator解決方案(這是真的,你應該去解決這個問題的方式):

Collections.sort(yourList, new Comparator<String>() { 
    @Override 
    public int compare(String s1, String s2) { 
     String[] split1 = s1.split(" "); 
     String[] split2 = s2.split(" "); 

     int n = split1[1].compareTo(split2[1]); 

     if (n == 0) { 
      return Integer.valueOf(split1[0]).compareTo(
            Integer.valueOf(split2[0])); 
     } 

     return n; 
    } 
}); 
相關問題