Java之Arrays.sort对类排序

最近在重新学习java基础的部分,意外的发现了一些新鲜事物,比如对于Arrays.sort的使用上,也有了新的认识。

起初接触到这个方法时,只知道它能对数组进行排序,用int数组简单地进行了一下测试,发现还挺香的。却没想到它也可以对自定义类的数组进行排序,但是,需要按照一定的规则来编写。

比如,想对下面这个类根据salary进行排序。

public class Person implements Comparable<Person> {

    private Double salary;

    public Person(Double salary) {
        this.salary = salary;
    }

    public Double getSalary() {
        return salary;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }

    @Override
    public int compareTo(Person o) {
        if (this.salary < o.salary)
            return -1;
        else if (this.salary > o.salary)
            return 2;
        return 0;
    }

    @Override
    public String toString() {
        return this.getClass().getSimpleName() + "{" +
                "salary=" + salary +
                '}';
    }
}

首先,实现接口Comparable,然后具体实现它的compareTo方法,salary相同为0,小于形参对象的salary则返回负数,否则返回正数。

然后,就可以进行测试了。

public class Boot {
    public static void main(String[] args) {
        Person[] place = new Person[10];
        place[0] = new Person(12.34);
        place[1] = new Person(12.34);
        place[2] = new Person(16.34);
        place[3] = new Person(10.34);
        place[4] = new Person(12.76);
        place[5] = new Person(23.34);
        place[6] = new Person(45.34);
        place[7] = new Person(2.34);
        place[8] = new Person(3.34);
        place[9] = new Person(12.34);

        System.out.println(Arrays.toString(place));
        Arrays.sort(place);
        System.out.println(Arrays.toString(place));
    }
}

重写toString方法的目的是为了提升Arrays.toString打印内容的可读性(否则调用默认的toString方法)。

原文地址:https://www.cnblogs.com/wxdmw/p/13858162.html