电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

java使用compareTo實現一個類的對象之間比較大小操作

瀏覽:4日期:2022-08-24 15:40:58

首先定義一個對象,注意這個對象必須實現Comparable接口,并重寫這個接口的compareTo方法

package cn.demo; public class Student implements Comparable{ private int number=0; //學號 private String name=''; //學生姓名 private String gender=''; //性別 public int getNumber(){ return number; } public void setNumber(int number){ this.number=number; } public String getName(){ return name; } public void setName(String name){ this.name=name; } public String getGender(){ return gender; } public void setGender(String gender){ this.gender=gender; } public int compareTo(Object obj){ Student student=(Student)obj; if(this.number==student.number){ return 0; //如果學號相同,那么兩者就是相等的 }else if(this.number>student.getNumber()){ return 1; //如果這個學生的學號大于傳入學生的學號 }else{ return -1; //如果這個學生的學號小于傳入學生的學號 } }}

在上面的重寫方法中標紅的地方,如果是小于號,則是按照降序排列,但是在我貼上去的代碼,則是按升序排列

接下來就是測試類了:

package cn.demo; import java.util.ArrayList;import java.util.Collections;import java.util.Iterator; public class Test { public static void main(String[] args) { Student student1=new Student(); student1.setNumber(5); Student student2=new Student(); student2.setNumber(2); Student student3=new Student(); student3.setNumber(1); Student student4=new Student(); student4.setNumber(4); ArrayList<Student> list=new ArrayList<Student>(); list.add(student1); list.add(student2); list.add(student3); list.add(student4); System.out.println('-------排序前-------'); Iterator<Student> iterator=list.iterator(); while(iterator.hasNext()){ Student stu=iterator.next(); System.out.println(stu.getNumber()); } //使用Collections的sort方法對list進行排序 System.out.println('-------排序后-------'); Collections.sort(list); iterator=list.iterator(); while(iterator.hasNext()){ Student stu=iterator.next(); System.out.println(stu.getNumber()); } }}

如上所示,可以直接使用collections的sort方法進行排序

-------排序前-------5214-------排序后-------5421

補充知識:【JAVA】用Comparable接口學生的成績做降序排序!請正確指定泛型;用Comparator實現按照姓名排序,請正確指定泛型!

創建四個學生信息,分別包含姓名(String) , 年齡(int) ,分數(double)

(1)用Comparable接口對下列四位同學的成績做降序排序, 如果成績一樣,那在成績排序的基礎上按照年齡由小到大排序,請正確指定泛型;

(2)用Comparator實現按照姓名排序,請正確指定泛型。

//定義學生類,并實現Comparable接口<定義Student類型>public class Student implements Comparable<Student>{ private String name; private int age; private double grade; public Student() { } public Student(String name, int age, double grade) { this.name = name; this.age = age; this.grade = grade; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getGrade() { return grade; } public void setGrade(double grade) { this.grade = grade; } @Override public String toString() { return 'Student [姓名 :' + name +' 年齡 :' + age +' 分數' + grade + ']'; } /** * 用Comparable接口對下列四位同學的成績做降序排序, * 如果成績一樣,那在成績排序的基礎上按照年齡由小到大排序。請正確指定泛型 * @param o * @return */ @Override public int compareTo(Student o) { if(Double.compare(this.getGrade() , o.getGrade()) != 0){ if(Double.compare(this.getGrade() , o.getGrade()) > 0){return 1; }else {return -1; } } return this.getAge() - o.getAge(); }}

*定義Student類,聲明基本的屬性,方法及完成對Comparable接口的實現,實現“對成績實現降序,如果成績一樣,在成績排序的基礎上按照年齡由大到小的排序”的結果。

public class Task { public static void main(String[] args) { //定義四個學生對象 Student[] s1 = new Student[4]; s1[0] = new Student('liusan' , 20 , 90.0); s1[1] = new Student('lisi' , 22 , 90.0); s1[2] = new Student('wangwu' , 20 , 99.0); s1[3] = new Student('sunliu' , 22 , 100.0); Arrays.sort(s1); System.out.println(Arrays.toString(s1)); System.out.println('=================='); //用Comparator實現按照姓名排序,請正確指定泛型 Arrays.sort(s1, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) {return o1.getName().compareTo(o2.getName()); } }); System.out.println(Arrays.toString(s1)); }}

以上這篇java使用compareTo實現一個類的對象之間比較大小操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 冲击式破碎机-冲击式制砂机-移动碎石机厂家_青州市富康机械有限公司 | 膏剂灌装旋盖机-眼药水灌装生产线-西林瓶粉剂分装机-南通博琅机械科技 | 安全阀_弹簧式安全阀_美标安全阀_工业冷冻安全阀厂家-中国·阿司米阀门有限公司 | 【MBA备考网】-2024年工商管理硕士MBA院校/报考条件/培训/考试科目/提前面试/考试/学费-MBA备考网 | 电动不锈钢套筒阀-球面偏置气动钟阀-三通换向阀止回阀-永嘉鸿宇阀门有限公司 | 连续密炼机_双转子连续密炼机_连续式密炼机-南京永睿机械制造有限公司 | 板框压滤机-隔膜压滤机-厢式压滤机生产厂家-禹州市君工机械设备有限公司 | 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 东莞喷砂机-喷砂机-喷砂机配件-喷砂器材-喷砂加工-东莞市协帆喷砂机械设备有限公司 | 微信聊天记录恢复_手机短信删除怎么恢复_通讯录恢复软件下载-快易数据恢复 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 818手游网_提供当下热门APP手游_最新手机游戏下载 | 作文导航网_作文之家_满分作文_优秀作文_作文大全_作文素材_最新作文分享发布平台 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | 石膏基自流平砂浆厂家-高强石膏基保温隔声自流平-轻质抹灰石膏粉砂浆批发-永康市汇利建设有限公司 | 旋振筛|圆形摇摆筛|直线振动筛|滚筒筛|压榨机|河南天众机械设备有限公司 | 全钢实验台,实验室工作台厂家-无锡市辰之航装饰材料有限公司 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 湖北省煤炭供应链综合服务平台 | 复合肥,化肥厂,复合肥批发,化肥代理,复合肥品牌-红四方 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | 仓储笼_金属箱租赁_循环包装_铁网箱_蝴蝶笼租赁_酷龙仓储笼租赁 测试治具|过炉治具|过锡炉治具|工装夹具|测试夹具|允睿自动化设备 | 北京京云律师事务所| 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 应急灯_消防应急灯_应急照明灯_应急灯厂家-大成智慧官网 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | 工业插头-工业插头插座【厂家】-温州罗曼电气| 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 | 火锅加盟_四川成都火锅店加盟_中国火锅连锁品牌十强_朝天门火锅【官网】 | 纯化水设备-EDI-制药-实验室-二级反渗透-高纯水|超纯水设备 | RFID电子标签厂家-上海尼太普电子有限公司 | 【365公司转让网】公司求购|转让|资质买卖_股权转让交易平台 | 西门子代理商_西门子变频器总代理-翰粤百科 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 全钢实验台,实验室工作台厂家-无锡市辰之航装饰材料有限公司 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | UV-1800紫外光度计-紫外可见光度计厂家-翱艺仪器(上海)有限公司 | 共享雨伞_共享童车_共享轮椅_共享陪护床-共享产品的领先者_有伞科技 |