Java リストの複数フィールド並び替え【Comparator徹底解説】

Javaでは、List内の複数のフィールドをソートするためにComparatorインタフェースを実装することができます。Comparatorインタフェース内のcompareメソッドは、複数のフィールドの値に基づいて比較やソートを行うことができます。

たとえば、複数のフィールドを持つPersonオブジェクトがあるとして、Personオブジェクトを並べ替えるためにComparatorインターフェースを実装したカスタム比較クラスを作成できます。

import java.util.Comparator;

public class PersonComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        // 先按照age字段进行升序排序
        int result = Integer.compare(p1.getAge(), p2.getAge());
        if (result == 0) {
            // 如果age字段相等,则按照name字段进行升序排序
            result = p1.getName().compareTo(p2.getName());
        }
        return result;
    }
}

その後、ListをソートするためにCollectionsクラスのsortメソッドを使用し、カスタムのComparatorクラスを渡すことができます。

List<Person> personList = new ArrayList<>();
// 添加Person对象到personList中

Collections.sort(personList, new PersonComparator());

List中のPersonオブジェクトを、ageフィールドで昇順に並べ替えることができます。ageフィールドが等しい場合は、nameフィールドで昇順に並べ替えます。異なる複数のフィールドの並び替えロジックを実装するには、必要に応じて比較器クラスのcompareメソッドを変更できます。

bannerAds