一、自然排序
自然排序:類實現了java.lang.Comparable接口,重寫compareTo()的規則
如果當前對象this大於形參對象obj,則返回正整數;如果當前對象this小於形參對象obj,則返回負整數;如果當前對象this等於參數對象obj,則返回零。
1.Person類
public class Person implements Comparable<Person> {
private Integer age;
public Person(Integer age) {
this.age = age;
}
@Override
public int compareTo(Person person) {
return this.age - person.age;
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
'}';
}
}
2.測試
Arrays有方法public static void sort(Object[] a)
@Test
public void test1() {
Person[] peoples = new Person[4];
peoples[0] = new Person(11);
peoples[1] = new Person(19);
peoples[2] = new Person(18);
peoples[3] = new Person(10);
Arrays.sort(peoples);
System.out.println(Arrays.toString(peoples));
}
3.結果
二、定製排序
定製排序:java.util.Comparator
當元素的類型沒有實現java.lang.Comparable接口而又不方便修改代碼時,那麼可以考慮使用Comparator的對象來排序
1.Person類
public class Person {
private Integer age;
public Person(Integer age) {
this.age = age;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
'}';
}
}
2.測試
Arrays有方法public static <T> void sort(T[] a, Comparator<? super T> c)
@Test
public void test2() {
Person[] peoples = new Person[4];
peoples[0] = new Person( 13);
peoples[1] = new Person(19);
peoples[2] = new Person(17);
peoples[3] = new Person(16);
Arrays.sort(peoples, new Comparator<Person>() {
@Override
public int compare(Person person1, Person person2) {
return person1.getAge() - person2.getAge();
}
});
System.out.println(Arrays.toString(peoples));
}