📜  根据姓氏对java中的列表进行排序 - Java(1)

📅  最后修改于: 2023-12-03 15:26:41.819000             🧑  作者: Mango

根据姓氏对Java中的列表进行排序

在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的比较器,我们可以实现根据对象的任意属性进行排序。这在实际开发中非常有用,建议程序员们掌握此技能。