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];//二位数组里面第二个数组的第一个数字 ```

相关推荐
Q_Q19632884753 分钟前
python的电影院座位管理可视化数据分析系统
开发语言·spring boot·python·django·flask·node.js·php
该用户已不存在6 分钟前
OpenJDK、Temurin、GraalVM...到底该装哪个?
java·后端
杜子不疼.30 分钟前
《Python学习之第三方库:开启无限可能》
开发语言·python·学习
TT哇37 分钟前
@[TOC](计算机是如何⼯作的) JavaEE==网站开发
java·redis·java-ee
Tina学编程43 分钟前
48Days-Day19 | ISBN号,kotori和迷宫,矩阵最长递增路径
java·算法
青川入梦1 小时前
MyBatis极速通关上篇:Spring Boot环境搭建+用户管理实战
java·开发语言·mybatis
执子手 吹散苍茫茫烟波1 小时前
leetcode415. 字符串相加
java·leetcode·字符串
CC__xy1 小时前
04 类型别名type + 检测数据类型(typeof+instanceof) + 空安全+剩余和展开(运算符 ...)简单类型和复杂类型 + 模块化
开发语言·javascript·harmonyos·鸿蒙
小韩博1 小时前
网络安全(Java语言)脚本 汇总(二)
java·安全·web安全
萤丰信息1 小时前
技术赋能安全:智慧工地构建城市建设新防线
java·大数据·开发语言·人工智能·智慧城市·智慧工地