2012-02-07 4 views
0

Quelqu'un peut-il dire quel est le meilleur (facile) façon de trier le tableau string 'index' suivant javaTri tableau 'Index'

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 aider ....

+1

Ce ne sont pas des littéraux de chaîne valides. Je suppose que vous voulez dire "{" 0 "," 1 ", etc ...}'? –

+1

Est-ce que ce nombre peut être> 10, et dans ce cas, est-ce que les chiffres inférieurs sont remplis de zéros? – Viruzzo

+0

Plz vérifier .. J'ai modifié la question –

Répondre

3

Depuis que vous avez modifié les exigences, votre propre comparateur est la bonne solution.

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 vérifier .. J'ai modifié la question –

1

Créer votre propre comparateur et trier le tableau en l'utilisant.

+0

Il est trop complexe, pour lui, il est assez solution standard avec Arrays.sort() – Tim

0

Utilisez la méthode Arrays.sort pour trier ... ci-dessous le code.

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); 
      }