2012-02-07 102 views
0

任何人能告诉什么是最好的(容易)的方式向以下字符串中的Java“索引”阵列排序“索引”阵列

String [] menuIndex= { "0", 
         "1", 
         "2", 
         "3", 
         "0.0", 
         "0.0.1", 
         "0.0.0", 
         "0.0.4", 
         "14" , 
         "14.0", 
         "0.1" }; 
I need the sorted array in the following format 
0, 
0.0, 
0.0.0, 
0.0.1, 
0.0.4, 
0.1, 
1, 
2, 
3, 
14, 
14.0 

plz帮助排序....

+1

这些都不是有效的字符串文字。我假设你的意思是'{“0”,“1”等...}? – 2012-02-07 11:42:21

+1

这些数量可以是> 10,并且在这种情况下是较下层零填充? – Viruzzo 2012-02-07 11:48:29

+0

PLZ检查..我修改的问题 – 2012-02-07 11:54:20

回答

3

既然你已经改变的要求,你自己比较是正确的解决方案。

import java.util.Arrays; 
import java.util.Comparator; 

public class MyCmp implements Comparator<String> { 

    @Override 
    public int compare(String o1, String o2) { 
     String[] parts1 = o1.split("\\."); 
     String[] parts2 = o2.split("\\."); 
     int max = Math.max(parts1.length, parts2.length); 
     for (int i = 0; i < max; i++) { 
      if (i < parts1.length && i < parts2.length) { 
       Integer i1 = Integer.parseInt(parts1[i]); 
       Integer i2 = Integer.parseInt(parts2[i]); 
       if (i1 == i2) 
        continue; 
       return i1.compareTo(i2); 
      } 
      if (i < parts1.length) { 
       return 1; 
      } 
      if (i < parts2.length) { 
       return -1; 
      } 
     } 
     return 0; 
    } 

    public static void main(String[] args) { 
     String[] menuIndex = { "0", 
       "1", 
       "2", 
       "3", 
       "0.0", 
       "0.0.1", 
       "0.0.0", 
       "0.0.4", 
       "14", 
       "14.0", 
       "0.1" }; 
     Arrays.sort(menuIndex, new MyCmp()); 
     System.out.println(Arrays.toString(menuIndex)); 
    } 

} 
+0

PLZ检查不够标准的解决方案。我修改的问题 – 2012-02-07 11:56:03

1

创建您自己的比较器并使用它对数组进行排序。

+0

它太复杂了,对他来说是Arrays.sort() – Tim 2012-02-07 11:43:50

0

使用Arrays.sort方法进行排序..下面是代码。

String [] menuIndex= { "0","1","2","3","0.0","0.0.1","0.0.0","0.0.4","4","4.0","0.1"}; 
      Arrays.sort(menuIndex); 
      for(String str:menuIndex){ 
       System.out.println(str); 
      }