2016-06-21 2 views
-3

私は単一の基準の出力のそれぞれの中に複数の基準で並べ替える必要があるオブジェクトのリストを持っていました。例えば、EmploymentType、CategoryType、DepartmentType、Retirement date、employeeidのフィールドを有する従業員クラス。だから私は、私はここで使用することができるJavaのデザインパターンのどれかを知りたいemployid.so内の退職日以内に部門別のsort内でcategoryTypeをソートする必要があるemployTypeの基準でepmloyeeのリストをソートしたいですか?ここでは代わりに、あなたは設計の原則に従うことができますどのように考える必要があり、デザインパターン、次のコレクションの複数の並べ替えのベストデザインパターンです

+1

これは、デザインパターンとは何の関係もありません。クラスへのアクセス権があれば、 'Comparable'インターフェースを実装する必要があります。これは' compareTo(Object o) 'というメソッドをオーバーライドすることを可能にします。これについては、「スタックオーバーフロー」を参照してください。 – MaxG

答えて

0

:あなたのケースでは

は、あなたのクラスに様々なソート機能を追加します。しかし、あなたが同じクラスでそれを行うと、それは単一責任原則に違反します。

今後、新しいソートを追加するようになると、Open Closed Principleに違反する既存のクラスを変更します。

元の質問に戻って、それを行う最良の方法は、コンパレータを使用することです。

EmploymentTypeComparator、DepartmentTypeComparatorなどの別のクラスを使用できます。これらのクラスはソートロジックを処理します。

あなたは実装の詳細については、以下のコードを参照することができます。

https://examples.javacodegeeks.com/core-java/util/comparator/java-comparator-example/

+1

さらに、比較器を 'Comparator.thenComparing'(Java8 +)で連鎖させることで、ネストされたソートを簡単に行うことができます。 – hoefling

関連する問題