
306
8
章
舞台裏:カモのソート
カモソートマシンの作成
Array
の
sort()
テンプレートメソッドがどのように動作するか追跡し
てみましょう。テンプレートメソッドがアルゴリズムをどのように制
御し、アルゴリズムのある時点でどのように
Duck
に手順の実装を要
求するのかを確認します。
1
Duck[] ducks = {new Duck("
ダフィー
", 8), ... };
まず、
Duck
の配列が必要です。
2
Arrays.sort(ducks);
次に、
Arrays
クラスの
sort()
テンプレートメソッドに
カモを渡して呼び出します。
sort()
メソッド(および、そのヘルパーメソッド
mergeSort()
)がソート手順を制御します。
for (int i=low; i<high; i++){
... compareTo() ...
... swap() ...
}
3
ducks[0].compareTo(ducks[1]);
配列をソートするには、リストのすべてがソート順にな
るまで
2
つの項目を順々に比較します。
2
つのカモを比較する際には、
sort()
メソッドは
Duck
の
compareTo()
メソッドを使って比較方法を確認します。
compareTo()
メソッドは最初のカモで呼び出され、比較
対象のカモを渡します。
sort()
swap()
Arrays
compareTo()
toString()
Duck
4
swap()
Duck
がソート順でない場合は、
Arrays
の
swap()
具象メソッド
を使って順番を入れ替えます。 ...