Java中怎么按兩個(gè)字段排序

小億
188
2024-03-22 17:20:52

要按兩個(gè)字段對(duì)對(duì)象進(jìn)行排序,可以使用Comparator接口來(lái)自定義比較規(guī)則。以下是一個(gè)示例代碼,按照對(duì)象的兩個(gè)字段進(jìn)行排序:

假設(shè)有一個(gè)對(duì)象Person,其中包含兩個(gè)屬性:name和age?,F(xiàn)在要按照name屬性進(jìn)行首先排序,如果name相同,則按照age屬性進(jìn)行排序。

import java.util.Comparator;

public class Person {
    private String name;
    private int age;

    // 構(gòu)造方法、getter和setter方法省略

    // 自定義比較規(guī)則
    public static Comparator<Person> nameAndAgeComparator = new Comparator<Person>() {
        @Override
        public int compare(Person p1, Person p2) {
            int compareByName = p1.getName().compareTo(p2.getName());
            if (compareByName == 0) {
                return Integer.compare(p1.getAge(), p2.getAge());
            }
            return compareByName;
        }
    };
}

// 在使用時(shí),可以使用Collections.sort()方法進(jìn)行排序
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 25));
personList.add(new Person("Bob", 30));
personList.add(new Person("Alice", 20));

Collections.sort(personList, Person.nameAndAgeComparator);

在上面的代碼中,我們首先定義了一個(gè)nameAndAgeComparator比較器,它首先比較name屬性,如果name相同則再比較age屬性。然后在使用時(shí),通過(guò)Collections.sort()方法進(jìn)行排序,傳入比較器即可實(shí)現(xiàn)按照兩個(gè)字段排序的功能。

0