2016-11-08 7 views
1

私は最初の位置に整数(文字列として)を含み、2番目の位置にファイルへのリンクを含む2d文字列配列(データと呼ばれる)を作成しました。整数の2d文字列配列の並べ替え

例:

["3", "Test3.pdf"]; ["1", "Test1.pdf"]; ["2", "Test2.pdf"]; ["10", "Test10.pdf"] 

は、だから今、私は整数を昇順配列をソートする必要があります。だから、ソートの結果のようなソートされた配列でなければなりません:

["1", "Test1.pdf"]; ["2", "Test2.pdf"];["3", "Test3.pdf"];["10", "Test10.pdf"] 

私は、このためのいくつかのサンプルコードが見つかりました:

Arrays.sort(data, new Comparator<String[]>() { 
    @Override 
    public int compare(final String[] entry1, final String[] entry2) { 
     final String time1 = entry1[0]; 
     final String time2 = entry2[0]; 
     return time1.compareTo(time2); 
    } 
}); 

をしかし、問題は、この場合には、それは文字列のロジックとそれを比較していること、です、その結果は> 1,10,2,3となります。だから私はこれで結果をアーカイブすることはできません。私は何ができるのか知っていますか? 1つのタイプの2次元配列しか持てませんか?文字列と整数の混在ではない?

+1

のように行うことができます*これを持っている*必要がありますか文字列の配列の配列として?別々の 'int'と' String'パーツを持つオブジェクトの単純なコレクションは、ここだけではなくコード全体にわたって、ほぼ確実に良いでしょう。 –

+1

配列に文字列を入れる必要がある場合は、単に 'compare'メソッドで' int'に変換してください。 –

+0

あなたの問題を処理するための最良の構造は 'TreeMap ' –

答えて

1

比較は次のコードで示すように、整数への最初の要素を変換することによって行うことができます。

Arrays.sort(data, new Comparator<String[]>() { 
    @Override 
    public int compare(final String[] entry1, final String[] entry2) { 
     final Integer time1 = Integer.valueOf(entry1[0]); 
     final Integer time2 = Integer.valueOf(entry2[0]); 
     return time1.compareTo(time2); 
    } 
}); 
0

あなたはこの

Arrays.sort(data, new Comparator<String[]>() { 
    @Override 
    public int compare(final String[] entry1, final String[] entry2) { 
     final Integer time1 = Integer.parseInt(entry1[0]); 
     final Integer time2 = Integer.parseInt(entry2[0]); 
     return time1.compareTo(time2); 
    } 
}); 
+0

です。この回答は8分前に投稿された回答とは異なりますか? –

+0

は基本的にそうではありません。私はそれをテストしている間にそれを見ていませんでした – Massimo

関連する問題