列表排序
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<String> 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); } }
上面的代码生成以下结果。
例子
以下代码使用List接口中的sort()方法按其元素长度的升序对列表进行排序:
import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class Main { public static void main(String[] args) { List<String> 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); } }
上面的代码生成以下结果。
sort()方法使用修改的mergeesort算法,这是一个稳定的排序。
在稳定的排序中,相等的元素将在排序操作之后保持在它们当前的位置。
排序提供了 n*log(n)性能,其中 n 是列表中元素的数量。