ソートしたい要素のリストがある場合、Javaはこれを行うための2つの方法を提供します。
たとえば、Movieオブジェクトのリストがあり、それらをタイトルで並べ替えたいとします。
これを行う1つの方法は、ムービーリストを単一の引数として静的java.util.Collections.sort()メソッドの1つの引数バージョンを呼び出すことです。したがって、Collections.sort(myMovieList)を呼び出します。これを機能させるには、java.lang.Comparableインターフェイスを実装するようにMovieクラスを宣言する必要があり、必要なメソッドcompareTo()をこのクラス内に実装する必要があります。
ソートする別の方法は、静的java.util.Collections.sort()メソッドの2つの引数バージョンを、ムービーリストとjava.util.Comparatorオブジェクトを引数として呼び出すことです。私はCollections.sort(myMovieList、titleComparator)を呼び出します。この場合、MovieクラスはComparableインターフェイスを実装しません。代わりに、ムービーリスト自体を構築および維持するメインクラス内に、java.util.Comparatorインターフェイスを実装する内部クラスを作成し、必要な1つのメソッドcompare()を実装します。次に、このクラスのインスタンスを作成し、2引数バージョンのsort()を呼び出します。この2番目のメソッドの利点は、これらの内部クラスのコンパレータを無制限に作成できるため、オブジェクトのリストをさまざまな方法で並べ替えることができることです。上記の例では、
私の質問は、2引数バージョンのCollections.sort()が最初の1引数バージョンが行うすべてのことを実行するのに、なぜJavaで両方のソート方法を学ぶ必要があるのかということですが、リストの要素をソートできるという追加の利点がありますいくつかの異なる基準に基づいていますか?コーディング中に覚えておかなければならないことが1つ少なくなります。知っておくべきJavaでリストをソートする基本的なメカニズムが1つあります。