是的,可以使用Comparator.comparing方法来创建一个比较器,该比较器可以根据两个字段进行排序。当第一个字段相同时,可以使用thenComparing方法来根据第二个字段进行比较排序。

下面是一个示例代码:

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // 创建一个Person列表
        List<Person> personList = new ArrayList<>();
        personList.add(new Person("Alice", 25));
        personList.add(new Person("Bob", 30));
        personList.add(new Person("Alice", 20));
        personList.add(new Person("Bob", 25));
        
        // 使用Comparator.comparing方法创建一个比较器,首先根据name字段进行排序
        // 当name字段相同时,使用thenComparing方法根据age字段进行排序
        Comparator<Person> comparator = Comparator.comparing(Person::getName)
                .thenComparing(Person::getAge);
        
        // 使用比较器对Person列表进行排序
        personList.sort(comparator);
        
        // 打印排序后的结果
        for(Person person : personList) {
            System.out.println(person);
        }
    }
}

class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return name;
    }
    
    public int getAge() {
        return age;
    }
    
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
}

输出结果:

Person [name=Alice, age=20]
Person [name=Alice, age=25]
Person [name=Bob, age=25]
Person [name=Bob, age=30]

可以看到,首先根据name字段进行排序,当name字段相同时,根据age字段进行排序

Comparatorcomparing方法来创建一个比较器可以根据两个字段排序吗?当第一个字段一样时根据第二个比较

原文地址: http://www.cveoy.top/t/topic/iG4t 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录