package review;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class PersonTest {
public static void main(String[] args) {
//存储复合数据类型
List<Person> persons = new ArrayList<>();
List<Student> students = new ArrayList<>();
persons.add(new Person(12,"Mary "));
persons.add(new Person(13,"Smith"));
persons.add(new Person(11,"David"));
students.add(new Student(18,"亮亮 "));
students.add(new Student(19,"花花 "));
students.add(new Student(17,"豆豆 "));
System.out.println("P-unsorted:"+persons);
System.out.println("S-unsorted:"+students+"\n");
mySort1(persons);
mySort1(students);
System.out.println("P-sorted-Comparable:"+persons);
System.out.println("S-sorted-Comparable:"+students+"\n");
mySort2(persons,new MyComparator());
mySort2(students,new MyComparator());
System.out.println("P-sorted-Comparator:"+persons);
System.out.println("S-sorted-Comparator:"+students+"\n");
}
//Comparable
private static <T extends Comparable<? super T>> void mySort1(List<T> list1) {
for (int i = 0; i < list1.size() - 1; i++) {
for (int j = i + 1; j < list1.size(); j++) {
if (list1.get(i).compareTo(list1.get(j)) > 0) {
Collections.swap(list1, i, j);
}
}
}
}
//Comparator
private static <T> void mySort2(List<T> list1, Comparator<? super T> cp) {
for (int i = 0; i < list1.size() - 1; i++) {
for (int j = i + 1; j < list1.size(); j++) {
if (cp.compare(list1.get(i), list1.get(j)) > 0) {
Collections.swap(list1, i, j);
}
}
}
}
}
//操作类型应该是具体类型的父类类型
class MyComparator implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return o1.compareTo(o2);
}
}
结果如下: