package lesson6;
import java.util.*;
public class SortTest {
/**
* int[]数组使用Arrays.sort方式
*/
public static void sort(){
Person p1 = new Person("a", 11);
Person p2 = new Person("b", 21);
Person p3 = new Person("c", 21);
Person p4 = new Person("d", 15);
Person p5 = new Person("e", 55);
List<Person> list = new ArrayList<>();
list.add(p3);
list.add(p5);
list.add(p2);
list.add(p1);
list.add(p4);
// 第一种
// Collections.sort(list);
// 第二种
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return 0;
}
});
System.out.println(list);
}
static class Person implements Comparable<Person>{
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//数据库排序:order by age,name
@Override
public int compareTo(Person o) {
/*
如果上面是(Object o)还需要判断对象是否为该类的实例
if(!(o instanceof Person)){
throw new RuntimeException;
}
Person a=(Person) o; 转型
*/
if(age == o.age){
//String里有覆写compareTo方法,按字母顺序排序
return name.compareTo(o.name);
}
return age - o.age;
//Integer里有覆写该方法比较数字
// return Integer.compare(age, o.age);
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
}