重複の可能性:
2 つのフィールドによる Java ソートの問題
次のようなユーザーオブジェクトがあります
class user
{
String firstName;
String lastName;
}
これらのオブジェクトを含むがあり、List
名前で並べ替える必要があり、名前が一致する場合は、それらの名前のみを姓で並べ替えます。
重複の可能性:
2 つのフィールドによる Java ソートの問題
次のようなユーザーオブジェクトがあります
class user
{
String firstName;
String lastName;
}
これらのオブジェクトを含むがあり、List
名前で並べ替える必要があり、名前が一致する場合は、それらの名前のみを姓で並べ替えます。
ここにはいくつかのアプローチがあります。
Comparatorを実装し、これを標準 Java Collection lib で使用してコレクションを並べ替えることができます (例: Collections.sort() ) 。
Comparator<MyObject> comparator = ....
Collections.sort(listOfObjects, comparator); // note- will sort in place
別の方法は、オブジェクトがComparableを実装することです。これにより、オブジェクトにネイティブの並べ替え順序が導入されます。
両方のアプローチを同時に実装できることに注意してください。前者は、さまざまな並べ替え戦略 (名前順、日付順、サイズ順など) を実装する場合に便利です。後者は、ネイティブ順序付けの概念と Java ライブラリ内の標準ソート機能を利用したい場合に便利です。
オブジェクトの順序付けに関する Java チュートリアルを確認してください。
Comparable を実装compareTo
し、必要なことを行う独自のメソッドを使用する場合。
別のオプションは、Comparator
他の多くの回答で示されているようにカスタムを使用することです。
両方のアプローチを示す素晴らしい記事は、こちらにあります。