私は現在、主に楽しみのために、Java でさまざまな並べ替えアルゴリズムを実装して遊んでいますが、それを「正しく」実行する方法に苦労しています。つまり、s int
、long
s、String
s、boolean
s (実際には、これらは Java で比較可能ですか?)、独自のクラスなど、比較可能なものに対して選択した並べ替えアルゴリズムをユーザーが呼び出すことができるようにしたいと考えています。なんでもいい。問題は、これをどのように行うかです。
クラスを使用して並べ替えアルゴリズムを表すことを考えていたため、汎用リストなどを使用して並べ替え対象を内部に格納することを考えていました ( List<E>
)。これにより、複数のコンストラクターを使用できるようになり、ユーザーがさまざまな形式 (リスト、配列など) でデータを渡すことができるようになります。これは正しい方法ですか?私の現在の問題は、ユーザーが何かをソートしたいときにクラスを作成する必要がないようにしたいということSystem.out.println
です。
// Example:
int[] myInts = {5,4,3,2,1};
// This is what I do *not* want.
InsertionSort mySort = new InsertionSort();
int[] sortedInts = mySort.sort(myInts);
// This is more like what I want.
int[] sortedInts = Sorting.insertionSort(myInts);
基本的な質問のように思えるかもしれませんが、プログラミング言語で自分のやり方を学んでいるだけです。夏の仕事のためにソフトウェア会社で働く 2 年生のコンピューティングの学生にとって、これは少しばかげていますが、私の仕事のほとんどにプログラミングの知識がほとんど必要ないことに驚かれることでしょう...それは通常、より多くのデザインの知識です。
編集:
明確にするために、私の3つの主な質問は次のとおりです。
- ソートを行うクラスをユーザーに作成してもらうのと、ユーザーがインポートするクラスに静的メソッドを作成させるのとではどちらがよいでしょうか?
- プリミティブ データ型とジェネリック オブジェクトの両方を簡単に処理できますか? 同等の(または同様に)実装する汎用オブジェクトを処理できるようにしたいので、これによりプリミティブに問題が発生します(何も実装しないため;))。
- 一般的な入力を処理する最良の方法は何ですか?並べ替えを試みる前に何をチェックすればよいですか (たとえば、Comparable を実装するなど)?