java常用排序方法集合sort

1. Arrays.sort

Arrays.sort 是用于对 数组 进行排序的静态方法,位于 java.util.Arrays 类中。

特点
  • 只能用于数组(包括基本类型数组和对象数组)。

  • 对基本类型数组(如 int[]double[] 等)使用快速排序(Dual-Pivot Quicksort)。

  • 对对象数组(如 Integer[]String[] 等)使用归并排序(TimSort)。

  • 排序是原地进行的(即直接修改原数组)。

使用场景
  • 当你需要对一个数组进行排序时。

  • 当你需要排序基本类型数组时(Collections.sort 不能用于基本类型)。

示例
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // 对基本类型数组排序
        int[] intArray = {4, 2, 1, 3};
        Arrays.sort(intArray);
        System.out.println(Arrays.toString(intArray)); // 输出: [1, 2, 3, 4]

        // 对对象数组排序
        String[] strArray = {"Banana", "Apple", "Cherry"};
        Arrays.sort(strArray);
        System.out.println(Arrays.toString(strArray)); // 输出: [Apple, Banana, Cherry]
    }
}

2. Collections.sort

Collections.sort 是用于对 集合 进行排序的静态方法,位于 java.util.Collections 类中。

特点
  • 只能用于实现了 List 接口的集合(如 ArrayListLinkedList 等)。

  • 使用归并排序(TimSort)。

  • 排序是原地进行的(即直接修改原集合)。

  • 支持自定义排序规则(通过 Comparator)。

使用场景
  • 当你需要对一个 List 集合进行排序时。

  • 当你需要排序对象集合时(Arrays.sort 不能直接用于集合)。

示例
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // 对 List 集合排序
        List list = new ArrayList<>(Arrays.asList(4, 2, 1, 3));
        Collections.sort(list);
        System.out.println(list); // 输出: [1, 2, 3, 4]

        // 自定义排序规则(降序)
        Collections.sort(list, Collections.reverseOrder());
        System.out.println(list); // 输出: [4, 3, 2, 1]
    }
}

3. List.sort 方法

List 接口提供了一个 sort 方法,可以直接对列表进行排序。它实际上是 Collections.sort 的简化版。

特点
  • 是 List 接口的默认方法(Java 8 引入)。

  • 支持自定义排序规则(通过 Comparator)。

  • 原地排序(直接修改原列表)。

示例
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List list = new ArrayList<>(List.of(4, 2, 1, 3));
        list.sort(null); // 自然排序
        System.out.println(list); // 输出: [1, 2, 3, 4]

        list.sort((a, b) -> b - a); // 自定义排序(降序)
        System.out.println(list); // 输出: [4, 3, 2, 1]
    }
}

4. 总结对比

特性 Arrays.sort Collections.sort List.sort
适用对象 数组(基本类型和对象类型) 集合(实现了 List 接口的集合) 集合(实现了 List 接口的集合)
使用方式 静态方法 静态方法 实例方法
底层实现 基本类型:双轴快速排序;对象类型:TimSort TimSort TimSort
是否原地排序
自定义排序 支持 支持 支持
示例 Arrays.sort(array) Collections.sort(list) list.sort(comparator)

8. 其他方法

方法 适用场景 特点
Arrays.sort 数组排序 原地排序,支持基本类型和对象类型
Collections.sort 集合排序 原地排序,支持自定义排序规则
List.sort 集合排序 Collections.sort 的简化版
Stream.sorted 流排序 返回新流,支持函数式编程
TreeSet/TreeMap 动态维护有序数据 自动排序,基于红黑树实现
手动实现排序算法 学习或特殊需求 灵活,但需要自己实现
第三方库(如 Guava) 扩展功能 提供更多排序工具和灵活性

你可能感兴趣的:(java,开发语言,数据结构)