アルゴリズムを操作対象のデータ構造から分離する 1 つの方法は、アルゴリズムを実装するために必要な操作を考え、これらの操作をインターフェースとして抽象化し、インターフェースに関してアルゴリズムをコード化し、すべてのデータを取得することです。構造体はインターフェイスを実装します。
たとえば、並べ替えアルゴリズムで、 と の位置にある項目を比較する方法i
と、 と の項目をj
交換する方法が必要だとします。次に、インターフェイスは次のようになります。i
j
interface Sortable {
int compare(int i, int j);
void swap(int i, int j);
}
これで、次の観点からソーターを実装できますSortable
。
void sort1(Sortable container) {
// first way to sort
}
void sort2(Sortable container) {
// second way to sort
}
最後に、コンテナに以下を実装させますSortable
。
class CoolContainer1 implements Sortable {
public int compare(int i, int j) {
...
}
public void swap(int i, int j) {
...
}
// other operations
}
class CoolContainer2 implements Sortable {
public int compare(int i, int j) {
...
}
public void swap(int i, int j) {
...
}
// other operations
}
上記はすべて、学習演習の単なる提案であることに注意してください。Java には、リストと配列で機能する強力な並べ替え機能が用意されており、並べ替え順序を可能な限り詳細に指定できます。詳細については、メソッドをループしてCollections.sort
ください。