Comparatorcomparing方法来创建一个比较器可以根据两个字段排序吗?当第一个字段一样时根据第二个比较
是的,可以使用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字段进行排序
原文地址: http://www.cveoy.top/t/topic/iG4t 著作权归作者所有。请勿转载和采集!