📅  最后修改于: 2023-12-03 15:26:41.819000             🧑  作者: Mango
在Java中,我们经常需要对列表进行排序,而有时需要根据列表中对象的姓氏进行排序。这就需要我们使用Java的比较器(Comparator)来实现。
首先,我们需要定义一个比较器,该比较器将根据列表中对象的姓氏进行排序。定义如下:
class LastNameComparator implements Comparator<Person> {
public int compare(Person person1, Person person2) {
String lastName1 = person1.getLastName();
String lastName2 = person2.getLastName();
return lastName1.compareTo(lastName2);
}
}
其中,Person
为列表中对象的类型,getLastName()
方法为获取对象姓氏的方法。
然后,我们可以使用这个比较器将列表进行排序,如下:
List<Person> personList = new ArrayList<>();
// 添加对象到列表中
Collections.sort(personList, new LastNameComparator());
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class Person {
private String firstName;
private String lastName;
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
class LastNameComparator implements Comparator<Person> {
public int compare(Person person1, Person person2) {
String lastName1 = person1.getLastName();
String lastName2 = person2.getLastName();
return lastName1.compareTo(lastName2);
}
}
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("John", "Smith"));
personList.add(new Person("Anne", "Jones"));
personList.add(new Person("Tom", "Brown"));
personList.add(new Person("Adam", "Johnson"));
Collections.sort(personList, new LastNameComparator());
for (Person person : personList) {
System.out.println(person.getLastName() + " " + person.getFirstName());
}
}
}
输出结果为:
Brown Tom
Johnson Adam
Jones Anne
Smith John
使用Java的比较器,我们可以实现根据对象的任意属性进行排序。这在实际开发中非常有用,建议程序员们掌握此技能。