2017-06-14 1 views
-4

Wenn ich ein Array von Zeichenfolgen haben, zum Beispiel String[] myS = new String[] {"1234", "abcd", "234", "bcd", "34", "cd"}, wird die Arbeit daran arbeiten? Ich nahm an, dass die Sortierung nach Strings es alphabetisch sortieren würde, aber wenn ja, würde es brechen, wenn es eine Zeichenkette mit numerischen Ziffern sieht?Arrays.sort auf Strings

Hier ist meine Funktion

public static String[] inArray(String[] array1, String[] array2) { 

    if(array1.length == 0 || array2.length == 0) return new String[]{}; 

    int size=0, index = 0; 
    Boolean flag = false; 
    for(int i=0; i<array1.length; i++){ 
     flag = false; 
     for(int j=0; j<array2.length; j++){ 
      if(array2[j].contains(array1[i])){ 
      flag = true; 
      break; 
      } 
     } 

     if(flag == false) array1[i] = ""; 
     else size++; 
    } 

    if(size == 0) return new String[] {}; //No matches found 

    String[] sortedArr = new String[size]; 

    for(int i = 0; i<size; i++){ 
     if(array1[i] != ""){ 
     sortedArr[index] = array1[i]; 
     index++; 
     } 
    } 

    Arrays.sort(sortedArr); //Occasionally throws null pointer exception 
    return sortedArr; 
} 
+2

Haben Sie es versucht? –

+2

Es wird lexikographisch sortiert, so dass Zahlen vor den Buchstaben geordnet werden. – khelwood

+0

Ja. Ich bekomme eine Null-Zeiger-Ausnahme, bin mir aber nicht sicher, ob dies damit zusammenhängt, dass die Sortierung wegen numerischer Werte unterbrochen wird oder nicht. – Noobgineer

Antwort

0

Nein, einen "String mit Ziffern" si auch ein String ... (die in 2 String-Arrays und dabei einen Teil Vergleich von 1 und 2 nehmen)

Sortierung basiert in der Regel auf Unicode Codepoints, damit Nummern vor Buchstaben sortieren würden.

+0

Sie können auch einen Komparator/Kollator angeben, um die Sortierung ... –