使用 Comparator.comparing 方法创建多字段排序比较器

在 Java 中,可以使用 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 字段进行排序。

总结

Comparator.comparingthenComparing 方法提供了一种简单便捷的方式来创建多字段排序比较器,可以根据多个字段对集合进行排序,提高代码的灵活性和可读性。

使用 Comparator.comparing 方法创建多字段排序比较器

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

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