List排序
1.JDK8前版本
List接口提供了sort函数定义,传入Comparator对象实例即可自定义排序。
default void sort(Comparator<? super E> c) {
Object[] a = this.toArray();
Arrays.sort(a, (Comparator) c);
ListIterator<E> i = this.listIterator();
for (Object e : a) {
i.next();
i.set((E) e);
}
}
常用的排序方式有两种:
两种方式的底层均为调用list default方法sort(Comparator<? super E> c)
List<Integer> list = Arrays.asList(3, 2, 1);
list.sort(null); // 调用listdefault方法
Collections.sort(list); // 调用Collections包装器sort()方法。
Collections.sort()和Collections.sort(comparator)内部实现:
省略参数时要求List内存放对象已实现Comparable接口!
形参类型为Comparator<? super E> c,传入未实现Comparable接口对象是会抛出java.lang.ClassCastException异常
public static <T extends Comparable<?