Java语法---使用sort进行排序

目录

一、升序

二、降序

(1)类实现接口

(2)匿名内部类

三、自定义排序规则

四、集合中的sort排序

(1)升序

(2)降序

(3)自定义排序 


一、升序

升序排序就是按照从小到大排序。(注意,想进行排序的话,基本数据类型要换成包装类,就像int型要写成Integer)

 public static void main(String[] args) {Integer[] a={1,19,20,3,12,100,987,32};System.out.print("排序前: ");for(int i:a){System.out.print(i+" ");}System.out.println();System.out.print("排序后(升序): ");//开始使用sort进行升序排序Arrays.sort(a);for(int i:a){System.out.print(i+" ");}}

二、降序

想要使用sort进行降序排序,我们需要使用Comparator接口,这里有两种方式可以实现,一种是类实现接口,一种是匿名内部类,我们都讲一下。

(1)类实现接口

//程序入口
public class main1 {public static void main(String[] args) {Integer[] a={1,19,20,3,12,100,987,32};System.out.print("排序前: ");for(int i:a){System.out.print(i+" ");}System.out.println();System.out.print("排序后(降序): ");Arrays.sort(a,new myCom());for(int i:a){System.out.print(i+" ");}}
}//排序类
class myCom implements Comparator<Integer>{@Overridepublic int compare(Integer o1, Integer o2) {return o2-o1;}
}

(2)匿名内部类

public static void main(String[] args) {Integer[] a={1,19,20,3,12,100,987,32};System.out.print("排序前: ");for(int i:a){System.out.print(i+" ");}System.out.println();System.out.print("排序后(降序): ");Arrays.sort(a, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2-o1;}});for(int i:a){System.out.print(i+" ");}}

 

三、自定义排序规则

 这里我们自定义一个学生类,有name属性和age属性,我们按照年龄从大到小排序,如果年龄相等,就按照名字降序。

 

public static void main(String[] args) {student[] students=new student[5];//这里创建对象数组的时候,还要new一下,别忘了!这个很容易忽略,当然,你也可以声明数组的时候就初始化数据students[0]=new student();students[0].setAge(10);students[0].setName("bac");students[1]=new student();students[1].setAge(10);students[1].setName("cac");students[2]=new student();students[2].setAge(10);students[2].setName("aac");students[3]=new student();students[3].setAge(18);students[3].setName("op");students[4]=new student();students[4].setAge(8);students[4].setName("lisi");System.out.println(students[0]);System.out.print("排序之前");for(int i=0;i<students.length;i++){System.out.println(students[i].getName()+" "+students[i].getAge());}Arrays.sort(students, new Comparator<student>() {@Overridepublic int compare(student o1, student o2) {if(o1.getAge()==o2.getAge()){return o2.getName().compareTo(o1.getName());}return o2.getAge()-o1.getAge();}});System.out.println();for(int i=0;i<students.length;i++){System.out.println(students[i].getName()+" "+students[i].getAge());}}

四、集合中的sort排序

前面介绍的sort是数组的排序,集合中其实也一样,只不过Arrays.sort换成了Collections.sort

(1)升序

  public static void main(String[] args) {List<Integer> integerList=new ArrayList<>();integerList.add(18);integerList.add(10);integerList.add(20);integerList.add(3);integerList.add(17);System.out.println("排序前");for(Integer i:integerList){System.out.println(i);}System.out.println("排序后");//进行升序排序Collections.sort(integerList);for(Integer i:integerList){System.out.println(i);}}

(2)降序

与上面一样有两种方式实现,匿名内部类和类的实现接口,这里我就只写了匿名内部类的方法,另外一种可以看上面的数组排序。

 public static void main(String[] args) {List<Integer> integerList=new ArrayList<>();integerList.add(18);integerList.add(10);integerList.add(20);integerList.add(3);integerList.add(17);System.out.println("排序前");for(Integer i:integerList){System.out.println(i);}System.out.println("排序后");Collections.sort(integerList, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2-o1;}});for(Integer i:integerList){System.out.println(i);}}

(3)自定义排序 

还是和上面的需求一样,年龄从小到大排序,年龄一样按照名字大的在前面

 public static void main(String[] args) {List<student> students=new ArrayList<>();students.add(new student("abc",19));students.add(new student("cbc",19));students.add(new student("bbc",19));students.add(new student("abc",9));students.add(new student("abc",30));System.out.println("排序前");for(student i:students){System.out.println(i);}System.out.println("排序后");//进行自定义排序Collections.sort(students, new Comparator<student>() {@Overridepublic int compare(student o1, student o2) {if(o1.getAge()==o2.getAge()){return o2.getName().compareTo(o1.getName());}return o2.getAge()-o1.getAge();}});for(student i:students){System.out.println(i);}}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/241187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++内存管理和模板初阶

C/C内存分布 请看代码&#xff1a; int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd";int* ptr1 (int*)mallo…

OpenHarmony之内核层解析~

OpenHarmony简介 技术架构 OpenHarmony整体遵从分层设计&#xff0c;从下向上依次为&#xff1a;内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开&#xff0c;在多设备部署场景下&#xff0c;支持根据实际需求裁剪某些非必要的组件…

一周工作问题总结(2023.12.18-2023.12.22)

一周工作问题总结 1. 接口调用频率2. 汉字在数据库中占用字节问题3. Map在循环中修改自己的key与value4. Group BY5.递归同步数据6.代码移动Idea飘红 1. 接口调用频率 供应商给的接口可以每秒调用5-10次&#xff0c;那么我为了保险每秒调用5次&#xff0c;为了防止过度调用接口…

BUG记录——drawio出现“非绘图文件 (error on line 7355 at column 83: AttValue: ‘ expected)”

BUG现象 drawio出现“非绘图文件 (error on line 7355 at column 83: AttValue: ’ expected)”&#xff0c;如下图&#xff1a; 解决办法 这只是我自己摸索到的解决办法并不一定适用于所以人&#xff0c;对我是适用的。 首先用记事本打开损坏的drawio文件&#xff0c;如下 …

mathtype公式章节编号

1. word每章标题后插入章节符 如果插入后显示章节符&#xff0c;需要进行隐藏 开始->样式->MTEquationSection->修改样式->字体&#xff0c;勾选隐藏 2. 设置mathtype公式编号格式 插入编号->格式化->设置格式

什么是动态代理?

目录 一、为什么需要代理&#xff1f; 二、代理长什么样&#xff1f; 三、Java通过什么来保证代理的样子&#xff1f; 四、动态代理实现案例 五、动态代理在SpringBoot中的应用 导入依赖 数据库表设计 OperateLogEntity实体类 OperateLog枚举 RecordLog注解 上下文相…

SpringMVC基础知识(持续更新中~)

笔记&#xff1a; https://gitee.com/zhengguangqq/ssm-md/blob/master/ssm%20md%E6%A0%BC%E5%BC%8F%E7%AC%94%E8%AE%B0/%E4%B8%89%E3%80%81SpringMVC.md 细节补充&#xff1a;

深度学习 | 梯度下降算法及其变体

一、最优化与深度学习 1.1、训练误差与泛化误差 1.2、经验风险 1.3、优化中的挑战 1.3.1、局部最小值 1.3.2、 鞍点 经常是由于模型复杂度过高或者训练样本数据过少造成的 —— Overfitting 1.3.3、悬崖 1.3.4、长期依赖问题 二、损失函数 2.1、损失函数的起源 损失函数(loss…

041_小驰私房菜_MTK平台添加支持通过原生Camera API接口调用UsbCamera

平台:MTK 问题:通过调用Android Camera API去调用UsbCamera,需要做哪些修改? Google官方文档,关于usbcamera的支持: 外接 USB 摄像头 | Android 开源项目 | Android Open Source Project 相关修改内容如下: 一、MTK平台支持通过标准接口打开USB Camera 1)device相…

每日一题——轮转数组

1. 题目描述 给定一个整数数组nums&#xff0c;将数组中的元素向右轮转k个位置&#xff0c;其中k是非负数。 示例1: 输入&#xff1a;nums [1,2,3,4,5,6,7]&#xff0c;k 3 输出&#xff1a;[5,6,7,1,2,3,4] 解释&#xff1a; 向右轮转 1步&#xff1a;[7,1,2,3,4,5,6] 向右…

Unity自带的NavMesh寻路组件

最近看了一下Unity自带的NavMesh寻路组件&#xff0c;先说一下基本的使用&#xff1a; 首先先把AI Navgation的package包给安装上。 给场景地图添加上NavMeshSurface组件&#xff0c;然后进行烘焙&#xff0c;烘焙出对应的场景地图文件。 给移动物体添加对应的Nav MeshAgent组…

【XML】TinyXML 详解(二):接口详解

【C】郭老二博文之&#xff1a;C目录 1、XML测试文件&#xff08;laoer.xml&#xff09; <?xml version"1.0" standalone"no" ?> <!-- Hello World !--> <root><child name"childName" id"1"><c_child…

可视化开发

可视化开发 数据可视化 交互式可视化 文章目录 可视化开发前言一、可视化开发二、Python数据可视化大屏GIS图像智能识别处理软件开发三、可视化开发必备总结前言 可视化开发可以帮助开发者通过图形化界面和拖放操作来创建、编辑和测试应用程序。使用这些工具,开发者可以提高开…

解决用Fiddler抓包,网页显示你的连接不是专用/私密连接

关键&#xff1a;重置fiddler的证书 在Fiddler重置证书 1、Actions --> Reset All Certificates --> 弹窗一路yes 2、关掉Fiddler&#xff0c;重新打开 3、手机删掉证书&#xff0c;重新下载安装。 &#xff08;如果还不行&#xff0c;重新试一遍&#xff0c;先把浏览器…

1223西站坐标更新

1223 西站坐标更新 1.Update for the station’s location def initial_out_map_indoor_points(self):Load the indoor data and update both the wall_matrix and the ditch_matrix.# Initialize the wall_matrix# List of coordinatescoordinates [(417, 287, 417, 290),(4…

CSS3新增特性

CSS3 CSS3私有前缀 W3C 标准所提出的某个CSS 特性&#xff0c;在被浏览器正式支持之前&#xff0c;浏览器厂商会根据浏览器的内核&#xff0c;使用私有前缀来测试该 CSS 特性&#xff0c;在浏览器正式支持该 CSS 特性后&#xff0c;就不需要私有前缀了。 查询 CSS3 兼容性的网…

非静压模型NHWAVE学习(14)—— 算例制作:开闸式异重流(lock-exchange flow)

NHWAVE学习—— 算例制作&#xff1a;开闸式异重流&#xff08;lock-exchange flow&#xff09; 算例简介模型配置代码修改及输入文件制作代码修改参数文件制作&#xff08;input.txt&#xff09;水深和初始密度场文件制作&#xff08;depth.txt & sali0.txt&#xff09; 模…

springboot实现发送邮件开箱即用

springboot实现发送邮件开箱即用 环境依赖包yml配置Service层Controller层测试 环境 jdk17 springboot版本3.2.1 依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><ver…

docker构建镜像及项目部署

文章目录 练习资料下载一、docker基础1. 基本概念2. docker常见命令3. 命令别名4. 数据卷 二、docker自定义镜像1. 了解镜像结构2. 了解Dockerfile3. 构建Dockerfile文件&#xff0c;完成自定义镜像 三、网络1. docker常见网络命令2. docker自带虚拟网络3. 自定义网络 四、dock…

Oracle WebLogic Server WebLogic WLS组件远程命令执行漏洞 CVE-2017-10271

Oracle WebLogic Server WebLogic WLS组件远程命令执行漏洞 CVE-2017-10271 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用 修复建议 漏洞名称 漏洞描述 在Oracle WebLogic Server 10.3.6.0.0/12.1.3.0.3/2.2.1/1.10/12.2.1.1/22.0&#xff08;Application …