![c4d984ae2e68bf1a6985c3d2732a54cc.png](https://img-blog.csdnimg.cn/img_convert/c4d984ae2e68bf1a6985c3d2732a54cc.png)
列表排序
Collection类中的两个静态方法会对List进行排序。
- sort(List list)按照由元素实现的Comparable接口定义的顺序对List中的元素进行排序。
- sort(List list,Comparator c)使用传入的Comparator对象对元素进行排序。
我们还可以使用List接口中的sort(Comparator c)对List进行排序,而不使用Collections类。
以下代码演示了如何对 List 进行排序:
import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Main { public static void main(String[] args) { List list = new ArrayList<>(); list.add("J"); list.add("R"); list.add("C"); list.add("X"); System.out.println("List: " + list); // Uses Comparable implementation in String class // to sort the list in natural order Collections.sort(list); System.out.println("Sorted List: " + list); }}
上面的代码生成以下结果。
![7bc638adbeae9c368d8882cd4e201155.png](https://img-blog.csdnimg.cn/img_convert/7bc638adbeae9c368d8882cd4e201155.png)
例子
以下代码使用List接口中的sort()方法按其元素长度的升序对列表进行排序:
import java.util.ArrayList;import java.util.Comparator;import java.util.List;public class Main { public static void main(String[] args) { List list = new ArrayList<>(); list.add("Java"); list.add("R"); list.add("CSS"); list.add("XML"); System.out.println("List: " + list); // Uses List.sort() method with a Comparator list.sort(Comparator.comparing(String::length)); System.out.println("Sorted List: " + list); }}
上面的代码生成以下结果。
![4354ecf083a29c9310d0871e96585427.png](https://img-blog.csdnimg.cn/img_convert/4354ecf083a29c9310d0871e96585427.png)
sort()方法使用修改的mergeesort算法,这是一个稳定的排序。
在稳定的排序中,相等的元素将在排序操作之后保持在它们当前的位置。
排序提供了 n*log(n)性能,其中 n 是列表中元素的数量。