用Comparator接口自定义排序

Java常用接口:Comparator接口实现自定义对象的数组排序 在日常写程序时,或做笔试题时总会遇到自己定义的类或者数据结构,如果把自己定义的类存入List这样的数组中,排序是很麻烦的,比如: 下面定义了一个Person类 class Person{ String name; int age; public Person(String name,int age) { this.name = name; this.age = age; } @O... 阅读详情

求一个班级成绩的平均值和成绩排名(要名次和姓名),姓名用ABC表示。例:第1名:C 100.


import java.util.*;
public class Test {
    public static void main(String[] args) {
        int[] score = {90,80,70,60,65,75,85,95,100,55,58,61,71,74,76,81,88,92,99,97};
        String[] name = new String[20];
        for(int i = 0; i < score.length; i++){
            name[i] = String.valueOf((char)('A' + i));
        }
        //存入list用于排序
        List<Student> list = new LinkedList<Student>();
        int sumScore = 0;
        for(int i = 0; i < score.length; i++){
            list.add(new Student(name[i], score[i]));
            sumScore += list.get(i).getScore();
        }
        System.out.println("全班平均分为:" + 1.0*sumScore/list.size());
        Collections.sort(list, new MyComp());
        for(int i = 0; i < list.size(); i++){
            System.out.println("第" + (i+1) + "名:" + list.get(i).getName() + " " + list.get(i).getScore());
        }

    }
}

//学生类
class Student{
    private int score;
    private String name;
    public Student(String name, int score){
        this.score = score;
        this.name = name;
    }

    public int getScore(){
        return score;
    }

    public String getName(){
        return name;
    }
}

//自定义排序
class MyComp implements Comparator<Student>{
    public int compare(Student o1, Student o2){
        if(o1.getScore() < o2.getScore()) return 1; //分数低的排后面
        if(o1.getScore() == o2.getScore()) return 0;
        return -1;
    }
}


Visual Studio报错TRK0005找不到CL.exe?三步彻底解决环境变量问题 本文详细解析了Visual Studio报错TRK0005找不到CL.exe的根本原因,并提供了三步彻底解决环境变量问题的方案。从验证安装完整性到配置永久环境变量,再到注册表级修复,帮助开发者建立健壮的开发环境配置体系,确保编译链稳定运行。 阅读详情

相关推荐

IBIS模型中的Pullup和Pulldown曲线详解:如何避免信号完整性设计中的常见错误

本文深入解析IBIS模型中Pullup和Pulldown曲线的关键作用,揭示其在信号完整性设计中的黄金法则。通过详细分析曲线特性、常见误区及验证方法,帮助工程师避免设计错误,优化高速PCB设计。文章还展示了曲线数据在动态终端匹配、串扰预测和电源完整性分析中的高级应用,提升设计效率和可靠性。

weixin_30275415的博客 451

详解java中的【接口】(关键字implements)

详解java中的【接口】(关键字implements) 🌏1. 理解接口的概念 🌎2. 学会接口的语法(关键字implements) 🌍3. 掌握接口的用法 🌏4. 明白接口的特性 🌏5. 教你如何实现多个接口 🌎6. 接口之间是怎么继承的 🌏7. 给接口举个例子 🗺️7.1 Comparable接口 🗺️7.2 比较器Comparator 🌍8. Clonable接口和深拷贝 🗺️8.1 Clonable接口 🗺️8.2 浅拷贝 🗺️8.3 深拷贝 🌎9. 接口和抽象类的区

m0_58761900的博客 1万+

OpenCASCADE(OCC)读取 STEP 模型文件并在MFC中显示

OpenCASCADE(OCC)读取 STEP 模型文件并在MFC中显示

weixin_61900468的博客 1万+

【JAVA SE】Java抽象类和接口

什么是抽象类 什么是抽象类呢?抽象类顾名思义就是很抽象,就是当我们没有足够的信息去描述这个类的时候我们就可以先不用描述,这样的类就是抽象类。 用代码举个例子: class Shape { public void draw() { System.out.println("我要画图形!!"); } } class circle extends Shape { @Override public void draw() { System....

欢迎来到我的博客,在这里我会用我的方式来讲解知识,请大家多多关照 1044

利用绝对式编码器实现电机无限旋转的配置与优化

本文详细解析了如何利用绝对式编码器实现电机的无限旋转功能。通过切换驱动器编码器工作模式、精确计算逻辑位置范围等关键配置步骤,解决了传统方案在多圈计数溢出时的定位难题。该方案无需硬件改造,适用于大型回转台、连续供料系统等需要大范围连续绝对定位的自动化场景。

weixin_29184371的博客 239

如何判断一个程序员的技术比你强?

技术大佬与普通程序员之间存在明显的认知差异:前者善于将复杂问题抽象为经典计算机科学问题,用声明式代码替代过程式逻辑;对异常和边界条件极度敏感,具备系统化的排查方法论;代码追求高可读性而非炫技,且执着于底层原理研究。这种技术压制体现在解决问题的确定性上——通过扎实的理论功底和工程直觉,快速定位问题本质,而非依赖试错或搜索。真正的技术实力源于对底层逻辑的深刻理解和对系统稳定性的敬畏。

wldtzzming的专栏 1088

Java中的Comparable接口和Comparator接口

(一) ComparableComparable是在集合内部定义的方法实现的排序,位于java.util下。是一个对象本身就已经支持自比较所需要实现的接口,如String、Integer自己就实现了Comparable接口,可完成比较大小操作。自定义类要在加入list容器中后能够排序,也可以实现Comparable接口,在用Collections类的sort方法排序时若不指定Comparator,...

张阳的博客 454

图片边界矢量化-地理配准

无地理和投影信息的JPG图片,通过ArcGIS进行地理配准(Georeferencing)完成数字化边界。

u012727861的博客 1907

Java笔试题:将集合中的学生信息按照学生的年龄升序排列

青年教育社 2017-01-16 13:45 最近很多学员在参加笔试时都被问到集合中排序的问题,在新年的第一篇文章中给大家分享一下相关内容。“将集合中的学生信息按照学生的年龄升序排列”这个题目主要考察的是求职者对集合中元素存取以及元素值比较的方法、排序方法(一般使用冒泡排序)、泛型集合、集合中自带的sort方法、集合中比较器的应用等。下面分别使用冒泡排序和Sort完成题目的要求。 无论

u011277123的博客 8908

告别测序污染:手把手教你用Decontam+SCRUB+FEAST完成微生物组数据清洗全流程

本文详细解析了使用Decontam、SCRUB和FEAST三大工具完成微生物组数据清洗的全流程。从环境准备、数据导入到污染物识别、样本间污染校正及溯源分析,提供了一套可复用的污染校正工作流,帮助研究者提升数据质量,确保后续分析的可靠性。

weixin_33462927的博客 317

把群晖NAS变成游戏开发服务器:Perforce与虚幻引擎深度整合的5个关键配置(含.p4ignore模板)

本文详细介绍了如何将群晖NAS配置为游戏开发服务器,重点讲解了Perforce与虚幻引擎的深度整合。通过五个关键配置节点,包括用户权限架构、Workspace策略、资产同步优化、仓库清洁度保障和编辑器深度集成,帮助小型团队打造高效开发环境。文章还提供了实用的.p4ignore模板和优化技巧,显著提升开发效率。

weixin_30430677的博客 318

实现ComParable、Comparator接口进行自定义排序

实现ComParable、Comparator接口进行自定义排序 基本数据类型如整形,可以比大小进行排序,那么自定义的类如何按照我们的意愿进行排序呢?下面介绍俩种方法从类内、类外进行自定义排序 1.实现ComParable``接口进行自定义排序(该类类内操作) import java.util.Arrays; public class User implements Comparable<User> { //此类用于实现非基本数据类型的自定义排序 public int get

m0_50816499的博客 334

PCL ——LevenbergMarquardt非线性最小二乘法拟合圆柱(C++详细过程版)

使用C++详细过程版实现的LevenbergMarquardt非线性最小二乘法拟合圆柱

点云侠的博客 607

Java数组排序中Comparator接口实现自定义排序

1、为节点排序。节点由3个字段组成,包括num ,weight ,height 。先按照weight升序排序,再按照height降序排序。 2、使用Comparator接口规则:编写多个排序方式类实现Comparator接口,并重写新Comparator接口中的compare()方法。升序是前者减去后者,降序是后者减去前者。 3、代码测试:同时也是牛客网中某题。 题目描述: 搜狐员

iCoding91 4321

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java 对自定义的类排序:Comparator接口

目录 对自定义的类排序:Comparator接口 Comparator接口 例程 按名字升序排序: 按名字降序排序: 按年龄降序排序 例程源码 利用comparator接口实现排序的方法步骤: 步骤1.//比较器实现类--实现Comparator接口和compare方法 步骤2.利用Collection.sort方法传入步骤1中比较器类对象 对自定义的类排...

紫蝶侠的博客 1974

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Comparable和Comparator接口实现自定义对象排序

目录 Comparable接口 Comparator接口 小疑问: Comparable接口 我们现在有一个自定义Person类数组,想让数组中的每一个Person类对象按照年龄从小到大输出。 那最简单来说:我们可以写一个冒泡排序,来比较每个对象的年龄从而进行排序。但现在我们可以直接实现Comparable接口中的compareTo()方法即可达到排序 //1.COmparable接口 class Person implements Comparable<Person>{

weixin_48654011的博客 925

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java排序接口_详解JAVA使用Comparator接口实现自定义排序

1、原则Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法:int compare(Object o1, Object o2) 返回一个基本类型的整型如果要按照升序排序,则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)如果要按照降序排序,则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)import...

weixin_32309649的博客 354

通过实现Comparator接口完成对自定义的猫类按名字升序排序

首先综述一下使用Comparator接口完成自定义类比较的步骤: 1.我们需要自定义一个比较类去实现Comparator接口,然后实现Comparator接口中的Compare方法。 2.调用Collections接口中的sort方法,将需要排序的集合和比较类的对象作为参数,传入sort方法中。 下面是自己自定义的猫类,实现对猫类按姓名的升序排列 package cn.hpu.so...

ll123c的博客 781

TreeSet通过实现Comparator接口,自定义元素排序

//1:定义一个StudentScore类 package cn.dqlai.day10.demo03; public class StudentScore { private String name; private float chinese; private float math; public StudentScore() { } p...

dqlstudent的博客 594

利用Comparator接口实现自定义排序-------Comparator的初了解及初体验

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、Comparator是什么?二、了解所需相关方法1.Comparator内置实现自定义排序的抽象方法compare2.Arrays类下的sort方法三、使用步骤1.对于基本数据类型的排序2.对象数组的排序总结 前言 排序往往很头疼,排序的方法,采用什么语句,既费时,又费力,往往还吃力不讨好,且很多时候,我们无法自定义排序的方式,下面我将介绍如何使用Comparator接口中compare方法,并借助Arrays类下的so.

m0_55486529的博客 4195

java自定义类实现指定规则的排序:Comparator接口、Comparable接口、CompareTo()、Compare()

自定义类想进行排序,需要实现Comparable接口,否则在排序的时候,会出现向下转型失败!(可以看源码,知道在map的put方法的时候)

YiGeiGiaoGiao的博客 4798

java 排序接口_详解JAVA使用Comparator接口实现自定义排序

1、原则Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法:int compare(Object o1, Object o2) 返回一个基本类型的整型如果要按照升序排序,则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)如果要按照降序排序,则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)import...

weixin_30341571的博客 441

使用Comparable和Comparator两个接口实现自定义排序操作

一、使用Comparable 1、 封装学生类,实现Comparable接口。重写compareTo方法。自定义排序规则。 import java.util.Objects; public class Student implements Comparable<Student> { private String name; private int age;...

xiao-fei的博客 1639

TreeSet,TreeMap实现自定义排序(Comparable 接口和Comparator 接口的使用)

本文介绍了如何在 Java 中使用 TreeSet 和 TreeMap 来实现自定义排序。通过 Comparable 和 Comparator 接口,你可以灵活地定义元素的排序规则

qq_53604504的博客 704

JAVA 使用Comparator接口实现自定义排序

JAVA 使用Comparator接口实现自定义排序 1、原则 Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法: int compare(Object o1, Object o2) 返回一个基本类型的整型 如果要按照升序排序,则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(...

miss_sjzhhzh的博客 973

Comparator 接口->如何自定义排序方式

快速记住sort控制的机制,以及comparate方法的逻辑

m0_60358315的博客 360
上一篇: 一道画图题
下一篇: 用0~9使等式##*#=#*##=###成立,数字不重复
KingLearnJava
博客等级 码龄12年 93粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值