Java基础系列-一文搞懂自定义排序

java自定义排序

自定义排序的理解:

我们首先看需求:一个二维数组

\[1,3\],\[8,10\],\[15,18\],\[2,6\]

我们的需求是根据集合(二维数组取出来的数据)

左边小的左边这种方式排序

例如1<8 排序方式就是1,3,8,10

此时我们就需要自定义排序

java 复制代码
intervals={{1,3},{8,10},{15,18},{2,6}};

Arrays.sort(intervals,new Comparator<int[]>()

{

public int compare(int[]s1,int []s2)

{

return s1[0]-s2[0];

}



})

这段代码这样理解 comparator是比较器 是一个接口

我们使用匿名内部类方法 new 一个比较器 这时候必须实现里面的方法 compare方法返回值是Int

我们需要比较的对象是数组 根据数组左边的元素大小来排序

这时候参数就是int\[\]s1,int\[\]s2

实现compare方法

如果s1比s2大 返回就是1 那么 s1就排在后面

我们需要记住备操作的永远是第一个传参进来的数

例如我们在compare里面写

java 复制代码
public int compare(int[]s1,int []s2)

{

return s2[0]-s1[0];

}

此时如果s1大于s2返回值是 负一 那么s1就会排在前面

这一点理解非常重要

如果不熟悉匿名内部类的同学

也可以自定义类实现Comparator接口的compare方法

然后传参给Arrays.sort的第二个参数

例如

java 复制代码
class mycomparator implements Comparator<int[]>
{
public int compare()
{
定义你要实现比较的方法;
}



}

Arrays.sort(需要排序的数据,new mycomparator());
//就可以啦

还有一点就是多重数组可能给大家搞混 永远记住

\[\]\[\] \[\]\[\]这类【】【】的从外到内的数字 也是数组从外到内的过程。

例如

java 复制代码
arr[1][0];//二位数组里面第二个数组的第一个数字
相关推荐
无限的鲜花3 小时前
反射(原创推荐)
java·开发语言
IT二叔3 小时前
Java项目部署-03-teamcity-cicd-docker镜像流水线方式部署
java·ci/cd·持续部署
yongche_shi3 小时前
ragas官方文档中文版(五十)
开发语言·python·ai·ragas·如何评估和改进 rag 应用
一路向北he3 小时前
字节钢铁军团--“提供情境,而非控制”
java·开发语言·前端
超级数据查看器4 小时前
超级数据查看器 v10.0 发布
java·大数据·数据库·sqlite·安卓
AI行业学习4 小时前
Notepad++ 官方下载 + 完整安装 + 全套优化配置(2026最新)
开发语言·人工智能·python·前端框架·html·notepad++
折哥的程序人生 · 物流技术专研5 小时前
《Java 100 天进阶之路》第50篇:阻塞队列与并发容器(2026版)
java·面试题·java进阶·blockingqueue·并发容器·集合源码·java100天进阶
ai_coder_ai5 小时前
编写自动化脚本,在自己后端服务中使用Open Api进行设备相关操作
java·运维·自动化
大圣编程5 小时前
Python中continue语句的用法是什么?
开发语言·前端·python
硕风和炜5 小时前
【LeetCode: 2492. 两个城市间路径的最小分数 + DFS】
java·算法·leetcode·深度优先·dfs·bfs·并查集