java实现List<自定义对象>中某个字段排序

import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * @date 2023/12/19 11:29
 */
public class Main {

    public static void main(String[] args) throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {
        // java实现List<自定义对象>中某个字段排序
        List personList1 = new ArrayList<>();
        List personList2 = new ArrayList<>();
        Person person1 = new Person("1", "f");
        Person person2 = new Person("2", "m");
        personList1.add(person1);
        personList1.add(person2);
        personList2.add(person1);
        personList2.add(person2);

        // java8实现List<自定义对象>中某个字段排序
        // 按照姓名字段进行排序
        // personList1.sort(Comparator.comparing(Person::getName));// 升序
        personList1.sort(Comparator.comparing(Person::getName).reversed());// 降序
        // 输出排序结果
        for (Person person : personList1) {
            System.out.println(person.getName() + " - " + person.getSex());
        }

        // java8之前实现List<自定义对象>中某个字段排序
        // 按照姓名字段进行排序
        Collections.sort(personList2, new Comparator() {
            @Override
            public int compare(Person p1, Person p2) {
                // return p1.getName().compareTo(p2.getName()); // 升序
                return p2.getName().compareTo(p1.getName()); // 降序
            }
        });
        // 输出排序结果
        for (Person person : personList2) {
            System.out.println(person.getName() + " - " + person.getSex());
        }
    }
}

你可能感兴趣的:(java)