ソートする際に、順序付けをするためにつかわれるフィールドを
ソートのキーといいます。全学生の成績を、合計点順に表示したり、
学籍番号順に印刷したりといった場合、合計点や 学籍番号
が キー になります。
ここでは、前節の例の英語名のほかに日本語の読み、およびデータ投入順の
キーを追加し、3つのキーでソートする例を挙げておきます。
前節のプログラムとの違いは以下の点です。
- データが、単純なひとつの文字列でなく、
次のようなデータの組になっている。
- データの通し番号
- アルファベットの文字列(englishName)
- 漢字の文字列(name)
- ひらがなの文字列(yomi)
- したがって、上記データをフィールドとしてもつクラス Unit を定義する。
- フィールドを取り扱うメソッドを用意する。
- Unit を 文字列として表示する際に使われる メソッド toString
を オーバーライドしておく。
標準のメソッドでは、
クラス名と内部的な識別情報しか表示されない。
- TreeSet で使われる比較のためのメソッド compareTo
を オーバーライドし、yomi の順にソートされるようにしておく。
- データを配列に初期化しておいてから、TreeSet に渡すのではなく、
Unit のインスタンスを生成したら、直接 TreeSet に add してしまう。
配列とはお別れです。^^)
- SortedSet を用意し、
yomi 以外のキーでも順序づけをおこなう。
- 3種類のSortedSetの中から選んで、イテレータを設定するようにした。
ソースプログラム Sort6.java
実行結果(コンパイルと実行)
2回目の実行 java Sort6 e
java Sort6 j として実行すると下図のようになります。
プログラムの構造は以下のとおりです。