使用 Comparator.comparing 方法创建多字段排序比较器
使用 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.comparing 和 thenComparing 方法提供了一种简单便捷的方式来创建多字段排序比较器,可以根据多个字段对集合进行排序,提高代码的灵活性和可读性。
原文地址: https://www.cveoy.top/t/topic/qnzN 著作权归作者所有。请勿转载和采集!