java自定义排序Comparator

📑前言

本文主要是【java】——java自定义排序Comparator的文章,如果有什么需要改进的地方还请大佬指出⛺️

🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:CSDN主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见

目录

    • 📑前言
    • java多关键字排序
    • 📑文章末尾

java多关键字排序

  • 按成绩从大到小排序,如果成绩相同,按照java分数高低排序

    package practice;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    public class 多关键字排序 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		List<Student> list = new ArrayList<Student>();
    		list.add(new Student("张三", 100, 59));
    		list.add(new Student("李四", 100, 100));
    		list.add(new Student("王五", 98, 96));
    		list.add(new Student("赵六", 96, 98));
    		list.add(new Student("陈七", 59, 100));
    		Collections.sort(list,new Comparator<Student>() {
    			@Override
    			public int compare(Student o1, Student o2) {
    				// TODO Auto-generated method stub
    				//o1在前,o2在后,-1表示不换,1表示换
    				if(o1.score>o2.score) return o2.score-o1.score;//	<0
    				else if(o1.score<o2.score) return o2.score-o1.score;//	>0
    				else {
    					if(o1.java<o2.java) return o1.java-o2.java;
    				}
    				return 0;
    			}
    		});
    		for(Student i:list) {
    			System.out.println(i.toString());
    		}
    	}
    
    }
    
    class Student{
    	public Student(String stuname,int java,int mysql) {
    		this.stuname = stuname;
    		this.java = java;
    		this.mysql = mysql;
    		this.score = java+mysql;
    	}
    	String stuname;
    	int java;
    	int mysql;
    	int score;
    	//打印对象的时候,默认调用toString()
    	public String toString() {
    		return this.stuname+" "+this.java+" "+this.mysql+" "+this.score;
    	}
    	
    }
    
    
  • 打印结果

    李四 100 100 200
    赵六 96 98 194
    王五 98 96 194
    陈七 59 100 159
    张三 100 59 159
    

📑文章末尾

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云主机价格表和优惠活动汇总(2024年更新)

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

ENVI5.6版本中规则与不规则图像裁剪操作

图像裁剪的目的是将研究之外的区域去除&#xff0c;常用的是按照行政区划边界或自然区划边界进行图像的裁剪&#xff0c;在基础数据生产中&#xff0c;还经常要做标准分幅裁剪。按照ENVI的图像裁剪过程&#xff0c;可分为规则裁剪和不规则裁剪。 ENVI5.6之前版本的图像裁剪工具…

*(长期更新)软考网络工程师学习笔记——Section 22 无线局域网

目录 一、IEEE 802.11的定义二、IEEE 802.11系列标准三、IEEE 802.11的两种工作模式四、CDMA/CA协议&#xff08;一&#xff09;CDMA/CA协议的定义&#xff08;二&#xff09;CDMA/CA协议的过程 五、AC与AP&#xff08;一&#xff09;接入控制器AC&#xff08;二&#xff09;无…

浅谈6种流行的API架构风格

前言 API在现代软件开发中扮演着重要的角色&#xff0c;它们是不同应用程序之间的桥梁。编写业务API是日常开发工作中最常见的一部分&#xff0c;选择合适的API框架对项目的成功起到了至关重要的作用。本篇文章将浅谈一下当前6种流行的API架构风格的优点、缺点以及适用场景。 …

MySQL解决海量数据和并发性的方案——分库分表

分库分表其实是两个事情&#xff0c;为了解决的东西实际上也是两个&#xff0c;但是一定要注意&#xff0c;不到最后万不得已&#xff0c;不要用分库分表&#xff0c;因为这会对数据查询有极大限制。 数据量太大查询慢的问题。 这里面我们讲的「查询」其实 主要是事务中的查询…

数学建模-Matlab R2022a安装步骤

软件介绍 MATLAB是一款商业数学软件&#xff0c;用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境&#xff0c;主要包括MATLAB和Simulink两大部分&#xff0c;可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程…

idea写sql语句快捷键提醒,mapper注解开发,mybatis

第一步&#xff1a;注入SQL语言 1.显示上下文操作&#xff08;没有这个选项的话就选中sql然后直接alt回车快捷键&#xff09;2.注入语言或引用 3.mysql 第二步&#xff1a;配置MySQL数据库连接 1.首先点击侧边的数据库&#xff0c;再点击上面的加号 2.点击数据源&#xff…

C语言中对变量的理解

变量(variable)是程序中不可或缺的组成单位&#xff0c;是最基本的存储单元。 1.什么是变量&#xff1f; Ⅰ.概念&#xff1a; 内存中的一个存储区域&#xff0c;该区域的数据可以在同一类型范围内不断变化。 通过变量名&#xff0c;可以访问这块内存区域&#xff0c;获取里…

基于Spring Boot+vue的云上新鲜水果超市商城系统

本云上水果超市是为了提高用户查阅信息的效率和管理人员管理信息的工作效率&#xff0c;可以快速存储大量数据&#xff0c;还有信息检索功能&#xff0c;这大大的满足了用户、员工信息和管理员这三者的需求。操作简单易懂&#xff0c;合理分析各个模块的功能&#xff0c;尽可能…

17. 电话号码的字母组合(回溯)

从第一个数字开始遍历其对应的字母&#xff0c;将其加入StringBuffer中&#xff0c;继续深度优先搜索&#xff0c;当访问到最后一个数字的时候&#xff0c;将StringBuffer存储到ans中&#xff0c;然后回溯到下一个对应字母。 class Solution {public List<String> lette…

【JVM】常用命令

一、前言 Java虚拟机&#xff08;JVM&#xff09;是Java程序运行的基础设施&#xff0c;它负责将Java字节码转换为本地机器代码并执行。在开发过程中&#xff0c;我们经常需要使用一些命令来监控和管理JVM的性能和状态。本文将详细介绍6个常用的JVM命令&#xff1a;jps、jstat…

[Docker] Dockerfile

文章目录 什么是 Dockerfile&#xff1f;使用 Dockerfile 定制镜像开始构建镜像上下文路径 指令详解COPYADDCMDENTRYPOINTENVARGVOLUMEEXPOSEWORKDIRUSERHEALTHCHECKONBUILD 什么是 Dockerfile&#xff1f; Dockerfile 是一个用来构建镜像的文本文件&#xff0c;文本内容包含了…

算法训练day13Leetcode144 145 94 二叉树的前(中)(后)序遍历

今日学习的文章和视频链接 https://www.bilibili.com/video/BV1Hy4y1t7ij/?vd_source8272bd48fee17396a4a1746c256ab0ae 二叉树的种类 在我们解题过程中二叉树有两种主要的形式&#xff1a;满二叉树和完全二叉树。 满二叉树 满二叉树&#xff1a;如果一棵二叉树只有度为0的…

群晖NAS搭建WebDAV服务结合内网穿透实现Zotero公网环境多端同步

文章目录 一、Zotero安装教程二、群晖NAS WebDAV设置三、Zotero设置四、使用公网地址同步Zotero文献库五、使用永久固定公网地址同步Zotero文献库 Zotero 是一款全能型 文献管理器,可以 存储、管理和引用文献&#xff0c;不但免费&#xff0c;功能还很强大实用。 ​ Zotero 支…

Linux定时任务调度以及磁盘分区、挂载

一、定时任务调度 1、crond任务调度 定时任务设置 是指系统在某个时间执行的特定命令或程序 任务调度分类&#xff1a; ①系统工作&#xff1a;有些重要的工作必须周而复始地执行&#xff0c;如病毒扫描 ②个别用户工作&#xff1a;个别用户可能希望执行某些程序&#xff0c;比…

[element-ui] 级联选择器el-cascader不触发change事件

el-cascader 使用官网的数据是可以的 官网数据中最后一级没有children // 删除最后一级的children changeKey(arr) {for (var i0; i<arr.length; i) {if (arr[i].children.length) {this.changeKey(arr[i].children)} else {delete arr[i].children}} ]就可以了 参考&…

14.鸿蒙HarmonyOS App(JAVA)时钟组件计时器倒计时单选按钮复选框开关switch与开关按钮ToggleButton图像组件示范

鸿蒙HarmonyOS App(JAVA) 时钟组件 计时器 倒计时 单选按钮 复选框 开关switch 开关按钮ToggleButton 图像组件 ability_main.xml <?xml version"1.0" encoding"utf-8"?> <DirectionalLayoutxmlns:ohos"http://schemas.huawei.co…

vivado 使用Vitis HLS源、使用模型生成器源、使用系统生成器源

使用Vitis HLS源 AMD Vitis™ 高级综合&#xff08;HLS&#xff09;工具将C规范转换为寄存器传输级&#xff08;RTL&#xff09;实现&#xff0c;您可以将其合成到AMD设备中。你可以写CC、C或SystemC中的规范&#xff0c;AMD设备提供了大规模并行与传统处理器相比&#xff0c;…

电子签章服务器,如何解决无纸化最后一公里?

钉钉、飞书、企微、OA、ERP等主流企业办公系统&#xff0c;无法实现电子签章&#xff0c;往往审批后还要将合同文件打印出来再进行签章。实现无纸化办公的这最后一公里就成了难题。电子签章服务器的出现&#xff0c;提供了完美的解决方案。本文将从专业角度&#xff0c;探讨电子…

数学建模-时间序列预测步骤

目录 数据 第一步&#xff1a;定义时间 第二步&#xff1a;创建传统模型 结果 论文下笔 GG 数据 第一步&#xff1a;定义时间 第二步&#xff1a;创建传统模型 点击条件&#xff0c;点击 离群值全部勾选 点击统计 点击图 保存 选项 结果 论文下笔 由于我们的数据中不存在…