欢迎来到天天文库
浏览记录
ID:34723825
大小:170.68 KB
页数:8页
时间:2019-03-10
《java教程笔记13--比较器(comparable、comparator)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、java学习笔记13--比较器(Comparable、Comparator)Comparable接口的作用之前Arrays类中存在sort()方法,此方法可以直接对对象数组进行排序。 Comparable接口可以直接使用java.util.Arrays类进行数组的排序操作,但对象所在的类必须实现Comparable接口,用于指定排序接口。Comparable接口的定义如下:public interface Comparable{ public intcompareTo(T o);}此方法返回一个int类型的数据,但是此int的值只能是一下三种:1:表
2、示大于-1:表示小于0:表示相等 要求:定义一个学生类,里面有姓名,年龄,成绩三个属性,要求按成绩由高到低排序,如果成绩相等,则按照年龄由低到高排序。packagecom.itmyhome;importjava.util.Arrays;classStudentimplementsComparable{privateStringname;privateintage;privatefloatscore;publicStudent(Stringname,intage,floatscore){this.name=name;this.age=age;this.
3、score=score;}@OverridepublicintcompareTo(Studentstu){//覆写compareTo方法实现排序规则的应用if(this.score>stu.score){return-1;}elseif(this.scorestu.age){return1;}elseif(this.age4、eturn"姓名:"+this.name+",年龄:"+this.age+",成绩:"+this.score;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}publicfloatgetScore(){returnscore;}publicvoidsetScore(floatscore){this.score=score;5、}}publicclassT{publicstaticvoidmain(String[]args)throwsException{Studentstu[]={newStudent("张三",22,80f),newStudent("李四",23,83f),newStudent("王五",21,80f)};Arrays.sort(stu);//进行排序操作for(inti=0;i6、本原理:使用第一个元素作为根节点,之后如果后面的内容比根节点小,则放在左子树,如果内容比根节点的内容要大,则放在右子树。packagecom.itmyhome;classBinaryTree{classNode{//声明一个节点类privateComparabledata;//保存具体的内容privateNodeleft;//保存左子树privateNoderight;//保存右子树publicNode(Comparabledata){this.data=data;}publicvoidaddNode(NodenewNode){//确定是放在左子树还是右子树if(ne7、wNode.data.compareTo(this.data)<0){//内容小,放在左子树if(this.left==null){this.left=newNode;//直接将新的节点设置成左子树}else{this.left.addNode(newNode);//继续向下判断}}if(newNode.data.compareTo(this.data)>=0){//放在右子树if(this.right==null){this.right=newNode;//没有右子树则将此节点设置成右子树}else{this.right.addNode(newNo
4、eturn"姓名:"+this.name+",年龄:"+this.age+",成绩:"+this.score;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}publicfloatgetScore(){returnscore;}publicvoidsetScore(floatscore){this.score=score;
5、}}publicclassT{publicstaticvoidmain(String[]args)throwsException{Studentstu[]={newStudent("张三",22,80f),newStudent("李四",23,83f),newStudent("王五",21,80f)};Arrays.sort(stu);//进行排序操作for(inti=0;i6、本原理:使用第一个元素作为根节点,之后如果后面的内容比根节点小,则放在左子树,如果内容比根节点的内容要大,则放在右子树。packagecom.itmyhome;classBinaryTree{classNode{//声明一个节点类privateComparabledata;//保存具体的内容privateNodeleft;//保存左子树privateNoderight;//保存右子树publicNode(Comparabledata){this.data=data;}publicvoidaddNode(NodenewNode){//确定是放在左子树还是右子树if(ne7、wNode.data.compareTo(this.data)<0){//内容小,放在左子树if(this.left==null){this.left=newNode;//直接将新的节点设置成左子树}else{this.left.addNode(newNode);//继续向下判断}}if(newNode.data.compareTo(this.data)>=0){//放在右子树if(this.right==null){this.right=newNode;//没有右子树则将此节点设置成右子树}else{this.right.addNode(newNo
6、本原理:使用第一个元素作为根节点,之后如果后面的内容比根节点小,则放在左子树,如果内容比根节点的内容要大,则放在右子树。packagecom.itmyhome;classBinaryTree{classNode{//声明一个节点类privateComparabledata;//保存具体的内容privateNodeleft;//保存左子树privateNoderight;//保存右子树publicNode(Comparabledata){this.data=data;}publicvoidaddNode(NodenewNode){//确定是放在左子树还是右子树if(ne
7、wNode.data.compareTo(this.data)<0){//内容小,放在左子树if(this.left==null){this.left=newNode;//直接将新的节点设置成左子树}else{this.left.addNode(newNode);//继续向下判断}}if(newNode.data.compareTo(this.data)>=0){//放在右子树if(this.right==null){this.right=newNode;//没有右子树则将此节点设置成右子树}else{this.right.addNode(newNo
此文档下载收益归作者所有