2016-11-29 7 views
1

文字列に数字列があり、並べ替える必要があります。例:文字列中の数字の並び順をJavaの最初の値で並べ替えます。

投稿者:3,4,16; 1,5,16,18,19; 12,14,15,17; 6,10,11;

To:1,5,16,18,19; 3,4,16; 6,10,11; 12,14,15,17;

マイコード:

String test = "3,4,16;1,5,16,18,19;12,14,15,17;6,10,11;"; 
String sortedTest[] = test.split(";"); 
Arrays.sort(sortedTest); 
for(String i: sortedTest) 
    System.out.print(i +";"); 

しかし、私はこの上のArray.sort()を使用した場合、明らかに私が取得:

12,14,15,17、1,5,16,18,19 ; 3,4,16; 6,10,11;

例のようにソートするにはどうすればよいですか?

+0

をあなたは間違いなく、彼らがソートされ得る方法を言及する必要があります!これは視覚的に並べ替えを理解するために、カンマとセミコロンを取り除くために約3分かかった。 – geisterfurz007

答えて

2

あなたは、ソートに使用することができますしたいの方法を記述することができますカスタムコンパレータを:あなたは、Java 7を使用している場合

Arrays.sort(sortedTest, (arr1, arr2) -> Integer.valueOf(arr1.split(",")[0]).compareTo(Integer.valueOf(arr2.split(",")[0]))); 
+0

ありがとうございます。 :)とても便利なレコードです。 – Halep

1

文字列値をIntegerとして変換するコンパレータを実装する必要があります。これにより、これが適切にソートされます。ここで

は一例です: Java Comparator class to sort arrays

次に、具体的な比較で、あなたは完全にあなたのデータはあなたの配列に設定されている方法とソートそれら

+0

手がかりをありがとう。 :)私は確かにそれについて詳細を読むでしょう。 – Halep

0

私はあなたがこれを使用することができると思う

String test = "3,4,16;1,5,16,18,19;12,14,15,17;6,10,11;"; 
String sortedTest[] = test.split(";"); 
Arrays.sort(sortedTest, new Comparator<String[]>() { 
    @Override 
    public int compare(String[] o1, String[] o2) { 
     //TODO you can change the compare rule 
     return o1[0].compareTo(o2[0]); 
    } 
}); 


は、Java 8を使用している場合:

String test = "3,4,16;1,5,16,18,19;12,14,15,17;6,10,11;"; 
String sortedTest[] = test.split(";"); 
Arrays.sort(sortedTest, Comparator.comparing((String[] arr) -> arr[0]) 
             .reversed()); 
+0

既に次の質問で書かれています:http://stackoverflow.com/questions/5393254/java-comparator-class-to-sort-arrays 回答が重複していない – DamCx

関連する問題