Javaで任意の順番でソートする方法

java

JavaのCollection型(サブクラスにList型等がある)は、Collections.sortメソッドでソートすることが可能です。
Collections.sortメソッドは、第一引数にソートしたいCollection型のオブジェクト、第二引数にComparator型のオブジェクトを渡します。
第二引数のComparator型のオブジェクトにより、ソート順が決まります。

Collections.sortメソッドでは、Comparator型のcompareメソッドを利用してソートを行います。
ソート順を定義するためには、Comparator型を実装したクラスを独自に作成し、compareメソッドをオーバーライドして独自のロジックを記述する必要があります。
compareメソッドの説明は以下です。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Comparator.html#compare-T-T-
簡単に言うと、compareメソッドの第一引数と第二引数について、戻り値がマイナスの値の場合は「第一引数→第二引数」の順番に並び、戻り値がプラスの値の場合は「第二引数→第一引数」の順番に並びます。

これを利用して、任意の順番でソートを行うサンプルが以下になります。

【サンプルコード】

・MySortMain.java

・MySort1.java

・MySort2.java

【実行結果】


いかがでしたでしょうか。

javaで独自順のソート処理をする機会があったので、実装方法を簡単に書いてみました。
Comparatorインターフェースのcompareメソッドを実装すること、compareメソッドの戻り値によりソート順を定義すること、を抑えれば、何をしているか理解できると思います。

コメント

タイトルとURLをコピーしました