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

您的位置:首頁技術(shù)文章
文章詳情頁

Java自然排序Comparable使用方法解析

瀏覽:105日期:2022-09-03 09:37:56

首先說明用TreeSet集合存儲自定義時,無參構(gòu)造方法使用的是自然排序?qū)υ剡M(jìn)行排序的

然后,使用自然排序的前提是,讓元素所屬的類實現(xiàn)Comparable接口并重寫comparaTo(T o)方法,來完成。

其次要注意,重寫方法時,一定要注意排序規(guī)則必須按照要求的主要條件和條件來寫。 下面通過一個需求來具體實現(xiàn)一下。

需求:存儲學(xué)生對象并遍歷,創(chuàng)建TreeSet集合使用無參構(gòu)造方法。

要求:按照年齡從小到大排序,年齡相同時,按照姓名的字母順序排序

分析可知,需要兩個類:一個學(xué)生類(Student)一個操作類(TreeSetDemo)學(xué)生類中有兩個成員遍歷:姓名(name)、年齡(age)。(僅記錄重寫代碼部分)

操作類代碼:

public class TreeSetDemo { public static void main(String[] args) { //創(chuàng)建集合對象 TreeSet<Student> treeSet = new TreeSet<Student>(); //創(chuàng)建學(xué)生對象 Student s1 = new Student('xishi',29); Student s2 = new Student('wangzhaojun',30); Student s3 = new Student('diaocan',28); Student s4 = new Student('yangyuhuan',31); //添加元素 treeSet.add(s1); treeSet.add(s2); treeSet.add(s3); treeSet.add(s4); //遍歷 for (Student s : treeSet){ System.out.println(s); } }}

接下來測試,在學(xué)生類中實現(xiàn)了Comparable<E>接口,并重寫compareTo(T o)方法后,操作類的運行情況

在Student類中重寫compareTo(T o)方法代碼:(通過返回值的不同,來影響排序結(jié)果,具體看運行結(jié)果)

@Override public int compareTo(Student o) { return 0; } /* 運行結(jié)果:xishi,29 */@Override public int compareTo(Student o) { return 1; } /* 運行結(jié)果:xishi,29wangzhaojun,30diaocan,28yangyuhuan,31 */@Override public int compareTo(Student o) { return -1; } /* 運行結(jié)果:yangyuhuan,31diaocan,28wangzhaojun,30xishi,29 */

通過三次修改返回值,從運行結(jié)果中可以得出結(jié)論:

當(dāng)返回值為0時,認(rèn)為是重復(fù)元素,不進(jìn)行存儲。

當(dāng)返回值為1時,按照存儲順序,正向排序(升序)(因為是正向排序,可以理解從小到大的順序)

當(dāng)返回值為-1時,按照存儲順序,逆向排序(降序)(同理)

于是,可以通過控制返回值的不同來控制不同的排序結(jié)果。接下來實現(xiàn)上面的需求。

對compareTo方法在進(jìn)行修改,先使得年齡以升序的方式排序,代碼:

@Override public int compareTo(Student s) { int num = this.age - s.age; return num; } /* 運行結(jié)果:diaocan,28xishi,29wangzhaojun,30yangyuhuan,31 */

接下來完善要求,年齡相同時,按照姓名的字母順序排序,完整代碼如下:

//操作類代碼public class TreeSetDemo { public static void main(String[] args) { //創(chuàng)建集合對象 TreeSet<Student> treeSet = new TreeSet<Student>(); //創(chuàng)建學(xué)生對象 Student s1 = new Student('xishi',29); Student s2 = new Student('wangzhaojun',30); Student s3 = new Student('diaocan',28); Student s4 = new Student('yangyuhuan',31); Student s5 = new Student('linqingxia',31); //添加元素 treeSet.add(s1); treeSet.add(s2); treeSet.add(s3); treeSet.add(s4); treeSet.add(s5); //遍歷 for (Student s : treeSet){ System.out.println(s.getName()+','+s.getAge()); } }}//學(xué)生類中重寫代碼部分及運行結(jié)果@Override public int compareTo(Student s) { int num = this.age - s.age; //如果年齡相同則比較姓名字母順序(升序)排列。 int num2 = num == 0 ? this.name.compareTo(s.name) : num; return num2; } /* 運行結(jié)果:diaocan,28xishi,29wangzhaojun,30linqingxia,31yangyuhuan,31 */

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 风电变桨伺服驱动器-风电偏航变桨系统-深圳众城卓越科技有限公司 | 雨燕360体育免费直播_雨燕360免费NBA直播_NBA篮球高清直播无插件-雨燕360体育直播 | 办公室装修_上海办公室设计装修_时尚办公新主张-后街印象 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 板框压滤机-隔膜压滤机-厢式压滤机生产厂家-禹州市君工机械设备有限公司 | 氧氮氢联合测定仪-联测仪-氧氮氢元素分析仪-江苏品彦光电 | 渗透仪-直剪仪-三轴仪|苏州昱创百科 | TYPE-C厂家|TYPE-C接口|TYPE-C防水母座|TYPE-C贴片-深圳步步精 | 双工位钻铣攻牙机-转换工作台钻攻中心-钻铣攻牙机一体机-浙江利硕自动化设备有限公司 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 双工位钻铣攻牙机-转换工作台钻攻中心-钻铣攻牙机一体机-浙江利硕自动化设备有限公司 | 天津力值检测-天津管道检测-天津天诚工程检测技术有限公司 | 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | 必胜高考网_全国高考备考和志愿填报信息平台 | 旋片真空泵_真空泵_水环真空泵_真空机组-深圳恒才机电设备有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 中国产业发展研究网 - 提供行业研究报告 可行性研究报告 投资咨询 市场调研服务 | 事迹材料_个人事迹名人励志故事 学生作文网_中小学生作文大全与写作指导 | 驾驶人在线_专业学车门户网站| 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 酒糟烘干机-豆渣烘干机-薯渣烘干机-糟渣烘干设备厂家-焦作市真节能环保设备科技有限公司 | 中药超微粉碎机(中药细胞级微粉碎)-百科| 工控机,嵌入式主板,工业主板,arm主板,图像采集卡,poe网卡,朗锐智科 | 回转炉,外热式回转窑,回转窑炉-淄博圣元窑炉工程有限公司 | 高光谱相机-近红外高光谱相机厂家-高光谱成像仪-SINESPEC 赛斯拜克 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 电主轴,车床电磨头,变频制动电机-博山鸿达特种电机 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 谈股票-今日股票行情走势分析-牛股推荐排行榜 | 老房子翻新装修,旧房墙面翻新,房屋防水补漏,厨房卫生间改造,室内装潢装修公司 - 一修房屋快修官网 | 重庆中专|职高|技校招生-重庆中专招生网 | 粘度计维修,在线粘度计,二手博勒飞粘度计维修|收购-天津市祥睿科技有限公司 | 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 盐水蒸发器,水洗盐设备,冷凝结晶切片机,转鼓切片机,絮凝剂加药系统-无锡瑞司恩机械有限公司 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 |