1. ホーム
  2. java

[解決済み] コンパレータを使ったソート-降順(ユーザー定義クラス) [終了した記事]

2023-07-14 06:07:37

質問

comparatorを使って、オブジェクトを降順にソートしたい。

class Person {
 private int age;
}

ここでは、Personオブジェクトの配列をソートしたいと思います。

どのようにすればよいのでしょうか?

どのように解決するのですか?

ユーザー定義クラスの降順ソートを行うには、この方法で compare() メソッドをオーバーライドします。

Collections.sort(unsortedList,new Comparator<Person>() {
    @Override
    public int compare(Person a, Person b) {
        return b.getName().compareTo(a.getName());
    }
});

または を使うことで Collection.reverse() で降順にソートする場合は、ユーザー プリンス で言及した コメント .

そして、このように昇順ソートを行うことができます。

Collections.sort(unsortedList,new Comparator<Person>() {
    @Override
    public int compare(Person a, Person b) {
        return a.getName().compareTo(b.getName());
    }
});

上記のコードをLambda式(Java 8以降)に置き換えると、簡潔なコードになります。

Collections.sort(personList, (Person a, Person b) -> b.getName().compareTo(a.getName()));

Java 8 では、List は sort() メソッドがあり、これは 比較演算子 をパラメータとして受け取ります(より簡潔)。

personList.sort((a,b)->b.getName().compareTo(a.getName()));

ここで a であり b はラムダ式でPerson型と推論される。