Java基础教程(二十)数组操作之数组排序:Java数组排序,从基础到黑科技

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️⃣ 底层算法解析

数据类型

使用算法

特点

int[]/double[]

双轴快速排序

非稳定,平均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()                           // 整体降序
);

关键结论

  1. 基础类型排序Arrays.sort()海量数据parallelSort()
  2. 对象排序需稳定性时用Timsort,自定义规则Comparator
  3. 理解算法特性(稳定/非稳定)避免业务逻辑错误

源码建议:查看DualPivotQuicksortTimSort类,掌握JDK的排序优化艺术。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值