0

編集:キャンパラータを使用してみましたが、うまくいきませんでした。エラーが発生しました

内容を含むファイルを読み込む必要があります

2011 Regular Season
Boston 162 5710 875 1600 352 35 203
NY_Yankees 162 5518 867 1452 267 33 222
Texas 162 5659 855 1599 310 32 210
Detroit 162 5563 787 1540 297 34 169
St.Louis 162 5532 762 1513 308 22 162
Toronto 162 5559 743 1384 285 34 186
Cincinnati 162 5612 735 1438 264 19 183
Colorado 162 5544 735 1429 274 40 163
Arizona 162 5421 731 1357 293 37 172
Kansas_City 162 5672 730 1560 325 41 129

これは私がそれを読んだコードです

static String specstat[][] = new String[1000][1000];

public static void main(String args[]) {

Arrays.sort(specstat, 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);
        }
    });

    for (final String[] s : specstat) {
        System.out.println(s[0] + " " + s[0]);
    }


    execute();
}

public static String[][] execute() {
    int line = 0;
    try {
        BufferedReader in = new BufferedReader(new FileReader(
                "files/input.txt"));

        String str;
        while ((str = in.readLine()) != null) {
            if (str.trim().length() == 0) {
                continue; // Skip blank lines
            }
            specstat[line] = str.split("\\s+");
            line++;
        }
        in.close();
    } catch (IOException e) {
        System.out.println("Can not open or write to the file.");
    }
    return specstat;

}

テキスト ファイルの最後の (または任意の) 列の最初の列に基づいて 2D 配列を並べ替えるにはどうすればよいですか?

4

4 に答える 4

3

私が理解していることから、配列内の配列の位置を配置して、2D 配列を並べ替えたいと考えています。次のようなArrays.sort()カスタムで使用できます。Comparator

Arrays.sort(specstat, new Comparator<String[]>() {
    @Override
    public int compare(String[] array1, String[] array2) {
        //do your comparison here...
    }
});

String.compare()を使用して数値を使用または比較すると役立つ場合がありますInteger.parseInt(String s)。2D 配列内の個々の文字列配列を並べ替える場合は、各配列を個別に並べ替える必要があります。

編集: 推奨される比較方法については、コメントを参照してください。

于 2013-05-30T16:55:34.920 に答える
3

この目的で 2D 配列を使用することはありません。

クラスを作成Teamし、ファイル形式のフィールドごとにインスタンス変数を定義します。次に、必要な基準に基づいて比較する方法を定義するComparator(たとえば、 )を実装するクラスを作成します。TeamComparatorTeams

次に、 の配列Teamsまたは のListを使用できますTeams

最後に、配列を並べ替えることができます

Arrays.sort(teamsArray, new TeamComparator()) 

またはリスト

Collections.sort(teamsList, new TeamComparator())
于 2013-05-30T16:52:56.117 に答える
0

QuickSortを使用して配列を並べ替える

于 2013-05-30T16:52:11.863 に答える
0

コンパレータでArrays.sortを使用できます。

于 2013-05-30T16:53:32.507 に答える