比较Collections.sort()与Arrays.sort()

Collections.sort()Arrays.sort() 的异同?

Collections.sort()Arrays.sort() 都是 Java 中用于排序的方法,它们的异同如下:

  1. 参数类型不同:Collections.sort() 方法接受 List 类型的参数,而 Arrays.sort() 方法接受数组类型的参数。

  2. 底层实现不同:Collections.sort() 方法使用的是归并排序(Merge Sort)算法,而 Arrays.sort() 方法使用的是快速排序(Quick Sort)算法。

  3. 排序稳定性不同:Collections.sort() 方法是稳定排序,即对于相等的元素,排序前后它们的相对位置不会发生改变。而 Arrays.sort() 方法是不稳定排序,即对于相等的元素,排序前后它们的相对位置可能会发生改变。

  4. 性能表现不同:Arrays.sort() 方法在大多数情况下比 Collections.sort() 方法性能更好,因为它对原始数据进行排序,不需要进行额外的包装和拆包操作。

综上所述,如果需要对 List 进行排序,应该使用 Collections.sort() 方法;而如果需要对数组进行排序,应该使用 Arrays.sort() 方法。

但需要注意的是,Arrays.sort() 方法和Collections.sort() 方法在排序时都可能会改变原始对象内元素的顺序,所以在使用前需要备份。

另外注意,使用Collections.sort()时,被排序列表中的元素必须实现Comparable接口中的compareTo方法。

参考:
Java中Collections.sort()的使用!