2013-08-27 92 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