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 ] ) );
}
}
戻る