1️⃣ 基础排序:Arrays.sort()
int[] numbers = {5, 3, 9, 1, 6};
Arrays.sort(numbers); // 升序排序
System.out.println(Arrays.toString(numbers));
// 输出: [1, 3, 5, 6, 9]
2️⃣ 对象数组排序:Comparator
实现逆序与自定义规则:
Integer[] nums = {7, 2, 8, 4};
Arrays.sort(nums, Comparator.reverseOrder()); // 降序
// 输出: [8, 7, 4, 2]
String[] words = {"apple", "kiwi", "banana"};
Arrays.sort(words, (s1, s2) -> s1.length() - s2.length()); // 按长度排序
// 输出: [kiwi, apple, banana]
3️⃣ 高性能场景:并行排序
百万级数据加速处理:
int[] bigData = new int[1_000_000];
// ...填充随机数
Arrays.parallelSort(bigData); // 利用多核并行排序
4️⃣ 底层算法解析
|
数据类型 |
使用算法 |
特点 |
|
|
双轴快速排序 |
非稳定,平均O(n log n) |
|
对象数组 |
Timsort |
稳定,适应部分有序 |
🔥 性能实测:对10万整型数组排序,parallelSort()比sort()快2倍以上(8核环境)
5️⃣ 自定义对象排序
按多字段组合排序:
class Product {
String name;
double price;
int stock;
}
Product[] products = ...;
Arrays.sort(products, Comparator
.comparingDouble(Product::getPrice) // 先按价格升序
.thenComparingInt(Product::getStock) // 再按库存升序
.reversed() // 整体降序
);
关键结论:
- 基础类型排序选
Arrays.sort(),海量数据用parallelSort() - 对象排序需稳定性时用Timsort,自定义规则靠
Comparator链 - 理解算法特性(稳定/非稳定)避免业务逻辑错误
源码建议:查看DualPivotQuicksort和TimSort类,掌握JDK的排序优化艺术。

被折叠的 条评论
为什么被折叠?



