java中有这样一个方法可以帮助我们实现数组的自定义排序:Arrays类的public static <T> void sort(T[] a, Comparator<? super T> c)
我们只需要实现Comparator接口,也就是实现其中的compare方法,在该方法中按照自己希望的规则来编写排序。
compare方法的完整声明是这样的:public int compare(int[] o1, int[] o2)
也就是说,参数只支持一维数组。但需要注意的是,数组o1、o2并不是我们传入的数组的哪部分,而是一个指代,o1、o2这个一维数组中的元素指的是要比较的元素的下标,o1的下标为0的元素对应传入数组的下标为0的元素,o1的下标为1的元素对应传入数组的下标为1的元素,以此类推。
返回o1的元素减o2的元素是升序,返回o2的元素减o1的元素是升序。
package com.ex.greedy; import java.util.Arrays; import java.util.Comparator; public class test { public static void main(String[] args) { int[][] arr={{1,4,5},{2,5,3},{1,2,3},{5,4,3},{1,4,3}}; //让数组按照这样的顺序排序:优先按第一个元素排,如果第一个元素相等,就按照第二个元素排,如果第二个元素也相等的话,就按照第三个元素排。都要升序。 Arrays.sort(arr, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { if (o1[0]!=o2[0]){ return o1[0]-o2[0]; }else { if (o1[1]!=o2[1]){ return o1[1]-o2[1]; }else { return o1[2]-o2[2]; } } } }); //输出结果 for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[0].length; j++) { System.out.print(arr[i][j]+" "); } System.out.println(); } } }
输出结果:
1 2 3
1 4 3
1 4 5
2 5 3
5 4 3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人