Java 数组怎么排序

刚学Java的新手,十有八九会遇到“数组里的数字乱哄哄,想按大小排整齐”的需求——比如把考试成绩从低到高排,或者把购物车的价格从高到低捋清楚。很多人刚接触时会纠结“是不是要自己写一堆循环来比较?”其实Java早就给我们准备了现成的工具,不用从零开始造轮子。

最省心的办法:用工具类直接排序

Java里有个专门处理数组和集合的工具类叫Arrays,就像你家里的“家务小助手”,很多常用的操作它都提前做好了,排序就是它的拿手活。这个方法的好处是不用费脑子写复杂逻辑,几行代码就能搞定。

Java 数组怎么排序

举个生活化的例子:你把一堆散的乐高积木按大小摆整齐,不用自己一块一块比着放,找个分类盒倒进去晃一晃,它自动按尺寸码好。Arrays的sort()方法就是那个“分类盒”,只要把要排序的数组递进去,它就能帮你排好序。比如你有一个存了5个考试成绩的数组:

int[] scores = {85, 72, 93, 68, 90};

只要写一行代码:Arrays.sort(scores);

运行后scores就变成{68,72,85,90,93},默认是从小到大的正序。

不过这里要注意个小细节:如果要排从大到小的倒序,用sort()直接写是不行的。因为Java的基本数据类型(比如int、double)不能直接用倒序的工具,得换个小技巧:先把基本类型转成对应的包装类(比如int转Integer),再借助Collections工具类来排倒序,或者排完数组后自己反转一下,新手先记牢正序的用法就够了。

进阶玩法:按自定义规则排序

如果不想用默认的大小规则,比如想把一串字符串按长度排序,而不是按字母顺序,Arrays的sort()也能满足。比如你有几个存了水果名称的字符串数组:

String[] fruits = {"苹果", "香蕉", "草莓", "梨"};

默认排序会按拼音首字母排,结果是["苹果", "梨", "香蕉", "草莓"]。要是想按字数排(比如短的在前),就得给sort()加个“规则说明”。

这里要用到一个叫Comparator的东西,就像你给分类盒加个自定义要求:“这次要按积木的高度排,不是宽度”。还是用刚才的乐高例子,比如你要把积木按重量从轻到重排,就得给sort()指定“重量优先”的规则。不过这种自定义排序适合有一定基础的朋友,新手先把基础的Arrays.sort()用熟,再碰进阶玩法也不迟。

常见的新手坑要避开

很多新手刚用Arrays.sort()时,容易踩两个小坑:第一个是排序后发现原数组变了,比如你本来想保留原来的乱序成绩,排序后想复制一份新的,但sort()是直接修改原数组的,要是需要保留原数据,得先复制一份数组再排序;第二个是用倒序时忘了转包装类,直接对int数组用倒序会报错,这个坑多试两次就记住了。

总的来说,Java数组排序不用自己硬写循环,用Arrays.sort()就能解决绝大多数日常需求,等熟练了再尝试自定义规则,循序渐进就不会觉得难。

上一篇 C / C++ 编程语言核心特性与常见应用场景的知识科普讲解