最近在重新学习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方法)。