Arrays.sort()とインタフェースComparatorを使って多次元配列をソートしてみる

戻る
$ java -cp . SortingTest
初期状態:
        山田さん        Salary man      54才
        藤田さん        Student         19才
        加藤さん        Freelance       84才

3番目の項目でソートした結果:
        藤田さん        Student         19才
        山田さん        Salary man      54才
        加藤さん        Freelance       84才

2番目の項目でソートした結果:
        加藤さん        Freelance       84才
        山田さん        Salary man      54才
        藤田さん        Student         19才



import java.util.*;

/**
$Id: sort.html,v 1.1 2009/06/22 16:12:27 kishi Exp kishi $
@author KISHI Yasuhiro
*/

public class SortingTest {

    static public void main( String[] args ) {

        // String型の2次元配列を作成
        String[][] array = new String[ 3 ][];
        array[ 0 ] = new String[ 3 ];
        array[ 1 ] = new String[ 3 ];
        array[ 2 ] = new String[ 3 ];

        array[ 0 ][ 0 ] = "山田さん";
        array[ 0 ][ 1 ] = "Salary man";
        array[ 0 ][ 2 ] = "54才";

        array[ 1 ][ 0 ] = "藤田さん";
        array[ 1 ][ 1 ] = "Student   ";
        array[ 1 ][ 2 ] = "19才";

        array[ 2 ][ 0 ] = "加藤さん";
        array[ 2 ][ 1 ] = "Freelance ";
        array[ 2 ][ 2 ] = "84才";

        // 初期状態の表示
        System.out.println( "初期状態:" );
        dump( array );

        TheComparator comparator = new TheComparator();

        // 3番目の項目でソートするように設定
        comparator.setIndex( 2 );
        // ソート実施
        Arrays.sort( array, comparator );

        // ソート結果を出力
        System.out.println();
        System.out.println( "3番目の項目でソートした結果:" );
        dump( array );

        // 2番目の項目でソートするように設定
        comparator.setIndex( 1 );
        // ソート実施
        Arrays.sort( array, comparator );

        // ソート結果を出力
        System.out.println();
        System.out.println( "2番目の項目でソートした結果:" );
        dump( array );

    }

    /** 結果の一覧表示 */
    static public void dump( String[][] array ) {

        for ( int i = 0;i < array.length;i++ ) {
            for ( int j = 0; j < array[ i ].length;j++ ) {
                System.out.print( "\t" + array[ i ][ j ] );
            }

            System.out.println();
        }

    }
}

import java.util.*;

/**
$Id: sort.html,v 1.1 2009/06/22 16:12:27 kishi Exp kishi $
@author KISHI Yasuhiro
*/

public class TheComparator implements Comparator {

    /** ソート対象のカラムの位置 */
    private int index = 0;

    /** ソートするためのカラム位置をセット */
    public void setIndex( int index ) {
        this.index = index;
    }

    public int compare( Object a, Object b ) {
        String[] strA = ( String[] ) a;
        String[] strB = ( String[] ) b;

        return ( strA[ index ].compareTo( strB[ index ] ) );
    }
}

戻る
inserted by FC2 system