对象排序的两种实现方式

38 阅读1分钟

第一种实现方式:javaBean实现Comparable接口,规定对象的存放规则

/**
 * 第一种实现方式:javaBean实现Comparable接口,规定对象的存放规则
 *
 * 学生类
 */
public class Student implements Comparable<Student>{
    /**
     * 年龄
     */
    private String name;
    /**
     * 性别
     */
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public int compareTo(Student s) {
        // 按照年龄升序排序, 可先运行试试看, 看是不是自己想要的排序结果
        return this.age - s.age;
    }
}
        Student s1 = new Student("张三", 25);
        Student s2 = new Student("李四", 22);
        Student s3 = new Student("王五", 44);
        Student s4 = new Student("赵六", 15);

        Student[] students = {s1, s2, s3, s4};
        // Student类需要实现Comparable接口, 不然会报错
        Arrays.sort(students);
        System.out.println(Arrays.toString(students));

运行结果:对象按照年龄升序排序 在这里插入图片描述

第二种实现方式:使用Arrays.sort()方法时,用java.util里面的Comparator接口来定义排序规则

        // 第二种实现方式:使用Arrays.sort()方法时,用java.util里面的Comparator接口来定义排序规则
        Arrays.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                // 按照年龄降序排序, 注意要提供对象的getAge()方法
                return o2.getAge() - o1.getAge();
            }
        });

可用lambda表达式简化代码,换成这一行代码

		Arrays.sort(students, (o1, o2) -> o2.getAge() - o1.getAge());

运行结果:对象按照年龄降序排序 在这里插入图片描述

总结:推荐使用第二种,不需要对javaBean里面的内容额外添加操作。

首次发布

hezhongying.blog.csdn.net/article/det…