2017-06-14 4 views
-4

たとえば、文字列の配列がある場合(String[] myS = new String[] {"1234", "abcd", "234", "bcd", "34", "cd"})、これを処理しますか?私は文字列のソートをアルファベット順に並べ替えると仮定しましたが、もしそうなら、数字の入った文字列を見たらそれは壊れますか?Arrays.sort on strings

ここで(2つの文字列配列に取って、1と2のサブストリングの比較を行っている)私の機能

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

試しましたか? –

+2

辞書順にソートされるので、数字は文字の前に並べられます。 – khelwood

+0

はい。私はNULLポインタの例外を取得しますが、これが数値型のためにソートを壊しているかどうかはわかりません。 – Noobgineer

答えて

0

いや、「桁の数字を含む文字列」SIもStringだ...

ソートは一般にUnicodeコードポイントに基づいており、数字は文字の前にソートされます。

+0

また、並べ替えを細かく調整するコンパレータ/コレクタを指定することもできます... –