Java での複数のプロパティによるオブジェクトのリストの並べ替え
Java では、プロパティごとにオブジェクトのリストを並べ替えるにはコンパレータを使用する必要があります。次の例を考えてみましょう。
public class ActiveAlarm { public long timeStarted; public long timeEnded; // ... other fields }
ActiveAlarm オブジェクトのリストを timeStarted と timeEnded の両方で昇順に並べ替えるには、ネストされたコンパレータを使用できます。
List<ActiveAlarm> alarms = ...; Comparator<ActiveAlarm> comparator = Comparator.comparing(alarm -> alarm.timeStarted) .thenComparing(alarm -> alarm.timeEnded); Collections.sort(alarms, comparator);
使用Java 8 ラムダ式
Java 8 では、コンパレータを表す簡潔な方法を提供するラムダ式が導入されました。
Comparator<ActiveAlarm> comparator = (alarm1, alarm2) -> { int result = Long.compare(alarm1.timeStarted, alarm2.timeStarted); if (result == 0) { result = Long.compare(alarm1.timeEnded, alarm2.timeEnded); } return result; };
代替ソート方法
代わりに、プロパティに直接アクセスするカスタム Comparator 実装を使用することもできます。
Comparator<ActiveAlarm> comparator = new Comparator<ActiveAlarm>() { @Override public int compare(ActiveAlarm o1, ActiveAlarm o2) { int result = Long.compare(o1.timeStarted, o2.timeStarted); if (result == 0) { result = Long.compare(o1.timeEnded, o2.timeEnded); } return result; } };
コンパレータを使用すると、プロパティの任意の組み合わせおよび順序でオブジェクトのリストを簡単に並べ替えることができます。
以上がJavaで複数のプロパティによってオブジェクトのリストを並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。