2013-08-27 165 views
-1

我可以在java中沒有簡單的方法,我可以以其中排序字符串數據

a < aa < aaa < aaaa 
a < b < ab < ba < aba 

String.compareTo方法將安排在以下格式的數據排列的字母。因此,不會成爲我的目的 一個< AA < AAA < b < AB < BA

請幫助!

+1

你必須寫一些東西,提供你的目的。如果你花了一些時間來做這件事,並且你有問題,你可以在這裏發佈代碼和問題。 – dcaswell

+1

編寫一個比較器,接受兩個字符串,如果字符串相同,則輸出0;如果第一個字符串較大(稍後顯示),則輸出1;如果它早一些出現,則輸出-1 –

回答

1

你可以使用比較比較字符串長度和使用compareTo在一起

 public int compare(String o1, String o2) 
     { 
      if(o1.length() > o2.length()) 
      { 
       return 1; 
      } 
      else if(o1.length() < o2.length()) 
      { 
       return -1; 
      } 
      return o1.compareTo(o2); 
     } 
+0

謝謝Raghav和Voe – user2720673

6

您可以通過使用Comparator

選中此做:

import java.util.Comparator; 
public class SComparator implements Comparator<String> { 

    @Override 
    public int compare(String s1, String s2) { 
     if(s1.length() != s2.length()){ 
      return s1.length() - s2.length(); 
     } 
     return s1.compareTo(s2); 
    } 

} 

然後,您可以使用它像這樣:

ArrayList<String> L = new ArrayList<String>(); 
// ... 
Collections.sort(L, new SComparator()); 
0

您也可以通過排序來解決此問題。

String[] words = {"going", "went", "go", "how", "jam"};  
Arrays.sort(arr); 

輸出:

go < going < how < jam < went