总结一下Java的排序API

文章聚焦Java排序API,指出开发中常借助Comparator实现比较,而本文关注直接可用的API。刷题时遇到数组或字符串排序,无需自己实现排序算法。介绍了Java中Arrays对数组排序、Collections对集合排序,还提及输出数组快捷方式,后续考虑补充Kotlin排序内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

贵而不显,华而不炫。
韬光养晦,深藏不露。


在我们平时的开发过程中,一般都是借助于Comparator实现比较功能的。但是这篇文章不讨论这个话题,咱要的是能直接使用的API。


刷题LeeCode的过程中,遇到数组or字符串的时候,很多情况下都是需要将其排序的。我们总不至于自己实现个冒泡,快排之类的排序算法吧。

这道题 455. 分发饼干 就需要用到数组的排序。

PS : 根据个人刷题的经验: 关于数组的算法题,若题目中出现最值问题,一般都需要进行排序。

进入正题——Java 排序的API

Java中的Arrays 对数组排序。
Java中的Collections对Java集合进行排序。

具体使用,请看下面的代码:

 public static void main(String[] args) {

        int[] arr0 = {15,8,26,7,1,5,35,13,90};

        // 从小-->大
        Arrays.sort(arr0);
        System.out.println("升序:"+Arrays.toString(arr0));


        Integer[] arr1 = {15,8,26,7,1,5,35,13,90};

        // 从大--> 小
        Arrays.sort(arr1, Collections.reverseOrder());
        System.out.println("降序:"+Arrays.toString(arr1));
    }

PS : 输出数组的快捷方式:Arrays.toString(array);


后续考虑将Kotlin排序的相关内容补充进来。

### Java 中的排序 API 或方法 Java 提供了多种内置工具来实现数组或集合的排序功能。以下是常用的几种方式: #### 1. 使用 `Arrays.sort()` 方法 `Arrays.sort()` 是针对数组的一种通用排序方法,支持基本数据类型以及对象类型的数组排序。默认情况下,它按照自然顺序进行升序排列。 ```java import java.util.Arrays; public class ArraySortExample { public static void main(String[] args) { int[] numbers = {5, 2, 9, 1}; Arrays.sort(numbers); System.out.println(Arrays.toString(numbers)); } } ``` 此代码片段展示了如何对整型数组进行排序[^1]。 --- #### 2. 使用 `Collections.sort()` 方法 对于基于集合框架的对象(如 `ArrayList`, `LinkedList`),可以使用 `Collections.sort()` 来完成排序操作。该方法同样遵循自然顺序,默认为升序排列。 ```java import java.util.*; public class CollectionSortExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(10); list.add(3); list.add(7); Collections.sort(list); System.out.println(list); } } ``` 这段代码说明了如何利用 `Collections.sort()` 对 `ArrayList` 类型的数据结构执行排序。 --- #### 3. 自定义比较器 (Comparator) 当需要依据特定条件而非自然顺序来进行排序时,可以通过传递自定义的 `Comparator` 实现灵活控制。 ```java import java.util.*; public class CustomSortExample { public static void main(String[] args) { List<String> names = new ArrayList<>(Arrays.asList("Alice", "Bob", "Charlie")); // 按字符串长度降序排序 names.sort((o1, o2) -> Integer.compare(o2.length(), o1.length())); System.out.println(names); } } ``` 通过 Lambda 表达式简化 Comparator 的编写过程,从而更高效地满足复杂场景下的需求[^2]。 --- #### 4. 并行排序 (`parallelSort`) 从 JDK 8 开始引入的新特性之一就是并行处理能力,在大规模数据集上能够显著提升性能表现。例如: ```java int largeArray[] = new int[1_000_000]; // 初始化... Arrays.parallelSort(largeArray); ``` 相比传统的单线程版本,这种方法更适合于大数据量环境中的应用开发工作流优化考虑[^3]。 --- ### 总结 以上介绍了四种主要适用于不同场合下使用的 Java 排序技术手段及其特点分析对比情况总结如下表所示: | **类别** | **适用范围** | **优点** | |----------------|----------------------------------|-----------------------------------| | Arrays.sort() | 数组 | 简洁易懂 | | Collections.sort() | 集合 | 支持更多动态容器 | | Comparator | 定制化逻辑 | 可扩展性强 | | parallelSort | 大规模静态数组 | 利用多核优势提高效率 | 希望这些信息对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值