package me.zhao;
public class Student implements Comparable {
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(Object o) {
return this.getAge() - ((Student)o).getAge();
}
}
package me.zhao;
import java.util.*;
public class SortTest {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student("aa", 60));
list.add(new Student("bb", 20));
list.add(new Student("cc", 10));
list.add(new Student("dd", 55));
list.add(new Student("ee", 35));
// f1(list);
// f2(list);
// f3(list);
// f4(list);
// f5(list);
Collections.sort(list);
list.forEach(System.out::println);
}
/**
* 正序 从小到大 自己实现
* @param list
*/
public static void f1(List<Student> list) {
list.sort((o1, o2) -> o1.getAge() - o2.getAge());
}
/**
* 正序 从小到大 调用 Integer.compare
* @param list
*/
public static void f2(List<Student> list) {
list.sort((o1, o2) -> Integer.compare(o1.getAge(), o2.getAge()));
}
/**
* 正序 从小到大 使用 Comparator.comparingInt
* @param list
*/
public static void f3(List<Student> list) {
list.sort(Comparator.comparingInt(Student::getAge));
}
/**
* 倒序 从大到小 自己实现
* @param list
*/
public static void f4(List<Student> list) {
list.sort((o1, o2) -> o2.getAge() - o1.getAge());
}
/**
* 倒序 从大到小 调用 Integer.compare
* @param list
*/
public static void f5(List<Student> list) {
list.sort((o1, o2) -> Integer.compare(o2.getAge(), o1.getAge()));
}
}
结论:
- 调用list.sort(),传入一个Comparator比较器
- 对象实现Comparable接口,重写compareTo方法