欢迎来到天天文库
浏览记录
ID:62033510
大小:28.50 KB
页数:8页
时间:2021-04-15
《java教程笔记13--比较器(Comparable、Comparator).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、java学习笔记13--比较器(Comparable、Comparator)Comparable接口的作用之前Arrays类中存在sort()方法,此方法可以直接对对象数组进行排序。 Comparable接口可以直接使用java。util.Arrays类进行数组的排序操作,但对象所在的类必须实现Comparable接口,用于指定排序接口。Comparable接口的定义如下:public interface Comparable2、种:1:表示大于-1:表示小于0:表示相等 要求:定义一个学生类,里面有姓名,年龄,成绩三个属性,要求按成绩由高到低排序,如果成绩相等,则按照年龄由低到高排序.packagecom.itmyhome;import java.util。Arrays;class Studentimplements Comparable<Student〉{privateStringname;privateintage;privatefloatscore;publicStudent(Stringname,int age,floatscore){ﻩthis.name=name;this3、.age=age;ﻩthis。score= score;}@Overridepublic int compareTo(Studentstu){//覆写compareTo方法实现排序规则的应用ﻩﻩif(this.score>stu。score){ﻩﻩreturn-1;ﻩﻩ}elseif(this.score<stu.score){ﻩﻩreturn1;ﻩﻩ}else{ﻩﻩif(this.age〉stu.age){ﻩreturn 1;ﻩﻩ}elseif(this.age4、34*157*810 在这群里获得更多java知识publicStringtoString(){ﻩﻩreturn”姓名:"+this。name+",年龄:"+this。age+", 成绩:"+this.score;ﻩ}ﻩpublicString getName(){returnname;}publicvoid setName(Stringname){this。name=name;}publicintgetAge(){ﻩﻩreturn age;}ﻩpublicvoid setAge(intage) {ﻩthis.age =age;}public floatg5、etScore(){returnscore;}ﻩpublicvoidsetScore(floatscore){ﻩﻩthis.score= score;ﻩ}ﻩ}public class T{ﻩpublicstaticvoid main(String[]args)throws Exception{ﻩStudentstu[]={newStudent(”张三",22,80f)ﻩ,new Student(”李四”,23,83f)ﻩﻩﻩﻩ,newStudent("王五",21,80f)};ﻩArrays.sort(stu);//进行排序操作ﻩfor (int i= 0;i6、< stu.length;i++){ﻩStudents= stu[i];ﻩSystem。out。println(s);ﻩ}}}分析比较器的排序原理实际上比较器的操作,就是经常听到的二叉树的排序算法.排序的基本原理:使用第一个元素作为根节点,之后如果后面的内容比根节点小,则放在左子树,如果内容比根节点的内容要大,则放在右子树。packagecom。itmyhome;classBinaryTree{ﻩclassNode{ //声明一个节点类ﻩﻩprivate Comparabledata; //保存具体的内容ﻩﻩprivateNodeleft;//保存左子树pri7、vateNoderight;//保存右子树ﻩﻩpublicNode(Comparabledata){ﻩﻩﻩthis.data=data;ﻩ}ﻩpublicvoidaddNode(Node newNode){ﻩ// 确定是放在左子树还是右子树if(newNode。data。compareTo(this.data)<0) {//内容小,放在左子树ﻩﻩﻩif(this.left ==null) {ﻩﻩﻩthis.left=newNode;// 直接将新的节点设置成左子树ﻩﻩﻩ}else{ﻩﻩﻩthis。left.addNode(newNode); //继续向下判断ﻩ8、ﻩﻩ}ﻩﻩ}ﻩﻩif (newNode
2、种:1:表示大于-1:表示小于0:表示相等 要求:定义一个学生类,里面有姓名,年龄,成绩三个属性,要求按成绩由高到低排序,如果成绩相等,则按照年龄由低到高排序.packagecom.itmyhome;import java.util。Arrays;class Studentimplements Comparable<Student〉{privateStringname;privateintage;privatefloatscore;publicStudent(Stringname,int age,floatscore){ﻩthis.name=name;this
3、.age=age;ﻩthis。score= score;}@Overridepublic int compareTo(Studentstu){//覆写compareTo方法实现排序规则的应用ﻩﻩif(this.score>stu。score){ﻩﻩreturn-1;ﻩﻩ}elseif(this.score<stu.score){ﻩﻩreturn1;ﻩﻩ}else{ﻩﻩif(this.age〉stu.age){ﻩreturn 1;ﻩﻩ}elseif(this.age
4、34*157*810 在这群里获得更多java知识publicStringtoString(){ﻩﻩreturn”姓名:"+this。name+",年龄:"+this。age+", 成绩:"+this.score;ﻩ}ﻩpublicString getName(){returnname;}publicvoid setName(Stringname){this。name=name;}publicintgetAge(){ﻩﻩreturn age;}ﻩpublicvoid setAge(intage) {ﻩthis.age =age;}public floatg
5、etScore(){returnscore;}ﻩpublicvoidsetScore(floatscore){ﻩﻩthis.score= score;ﻩ}ﻩ}public class T{ﻩpublicstaticvoid main(String[]args)throws Exception{ﻩStudentstu[]={newStudent(”张三",22,80f)ﻩ,new Student(”李四”,23,83f)ﻩﻩﻩﻩ,newStudent("王五",21,80f)};ﻩArrays.sort(stu);//进行排序操作ﻩfor (int i= 0;i
6、< stu.length;i++){ﻩStudents= stu[i];ﻩSystem。out。println(s);ﻩ}}}分析比较器的排序原理实际上比较器的操作,就是经常听到的二叉树的排序算法.排序的基本原理:使用第一个元素作为根节点,之后如果后面的内容比根节点小,则放在左子树,如果内容比根节点的内容要大,则放在右子树。packagecom。itmyhome;classBinaryTree{ﻩclassNode{ //声明一个节点类ﻩﻩprivate Comparabledata; //保存具体的内容ﻩﻩprivateNodeleft;//保存左子树pri
7、vateNoderight;//保存右子树ﻩﻩpublicNode(Comparabledata){ﻩﻩﻩthis.data=data;ﻩ}ﻩpublicvoidaddNode(Node newNode){ﻩ// 确定是放在左子树还是右子树if(newNode。data。compareTo(this.data)<0) {//内容小,放在左子树ﻩﻩﻩif(this.left ==null) {ﻩﻩﻩthis.left=newNode;// 直接将新的节点设置成左子树ﻩﻩﻩ}else{ﻩﻩﻩthis。left.addNode(newNode); //继续向下判断ﻩ
8、ﻩﻩ}ﻩﻩ}ﻩﻩif (newNode
此文档下载收益归作者所有