2016-06-21 10 views
1

Ich habe ein String-Array. Dieses Array besteht aus drei Integer-Arrays. Auf jeden Integer folgt jedoch ein Zeichen. Entweder l oder p oder r. Jetzt ist mein Ziel, das String-Array nach int-Werten zu sortieren. Array sort oder Collection.sort funktioniert nicht ordnungsgemäß. In meinem Fall, wenn das Array {-2l 1r 0p 4p 3l} ist, sollte die Antwort {-2l 0p 1r 3l 4p} sein.Sortierung String-Array nach numerischen Wert

String[] left = new String[starts.length]; 
      String[] right = new String[ends.length]; 
      String[] points_fast = new String[points.length]; 

      for (int i = 0; i < starts.length; i++) { 
       left[i] = (starts[i] + "l" + " "); 
      } 
      for (int i = 0; i < ends.length; i++) { 
       right[i] = (ends[i] + "r" + " "); 
      } 
      for (int i = 0; i < points.length; i++) { 
       points_fast[i] = (points[i] + "p" + " "); 
      } 
      String[] add = new String[left.length + right.length + points_fast.length]; 
      // add=l+r+p; 
      System.arraycopy(left, 0, add, 0, left.length); 
      System.arraycopy(right, 0, add, left.length, right.length); 
      System.arraycopy(points_fast, 0, add, left.length + right.length, points_fast.length); 

mein Ziel ist es, das Array "add" zu sortieren. N.B Ich habe versucht, es in eine Liste zu konvertieren und dann collections.sort zu verwenden. Es funktioniert nicht.

+0

Sie meinen Hash m ap ?? – Tasmin

Antwort

2

Ich hoffe, das Ihre Lösung erfüllen: Sie müssen nur den Collection.sort verwenden und den Komparator

List<String> mnames1 = Arrays.asList("-2l", "1r", "0p", "4p", "3l"); 
    System.out.println(mnames1+" before"); 
    Collections.sort(mnames1, new Comparator<String>() { 
     @Override 
     public int compare(String a, String b) { 
      String m = a.substring(0,a.length()-1); 
      String n = b.substring(0,b.length()-1); 
      return Integer.compare(Integer.parseInt(m),Integer.parseInt(n)); 
     } 
    }); 
    System.out.println(mnames1+ "after"); 

Ausgang außer Kraft setzen:

[-2L, 1r, 0p, 4p, 3l] vor

[-2L, 0p, 1r, 3l, 4p] nach

+0

Nein. Ich habe das auch versucht. Eigentlich habe ich diese Hilfe in einem Thread gefunden. Aber es funktioniert nicht. – Tasmin

+0

@Tasmin was nicht funktioniert hat. versuchen Sie es einfach und lassen Sie mich wissen die Fehlermeldung –

+0

Meine Eingabe war 1,1,3. Also das Array war wie {1l.1r.3p} Der Fehler ist Ausnahme im Thread "Haupt" java.lang.NumberFormatException: Für die Eingabe Zeichenfolge: "1r" – Tasmin

Verwandte Themen