java声明比较器类_Java常用类----比较器(Comparable,Comparator)

Comparable接口

Arrays类中存在sort()方法,此方法可以直接对对象数组进行排序

可以直接使用java.util.Array类进行数组的排序操作,但对象所在的类必须实现Comparable接口,用于指定排序接口。

Comparable接口定义如下:

public interface Comparable{public intcompareTo(T o);

}

此方法返回一个int类型的数据,但此int的值只能是一下三种:

1:表示大于    -1:表示小于    0:表示等于

要求:

定义一个学生类,里面有姓名,年龄,成绩三个属性,要求按成绩由高到低排列,如果成绩相等,则按年龄由低到高排序:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

class Student implements Comparable { //指定类型为Student

privateString name ;private intage ;private floatscore ;public Student(String name,int age,floatscore){this.name =name ;this.age =age ;this.score =score ;

}publicString toString(){return name + "\t\t" + this.age + "\t\t" + this.score ;

}public int compareTo(Student stu){ //覆写compareTo()方法,实现排序规则的应用

if(this.score>stu.score){return -1;

}else if(this.score

}else{if(this.age>stu.age){return 1;

}else if(this.age

}else{return 0;

}

}

}

};public classTest{public static voidmain(String args[]){

Student stu[]= {new Student("张三",20,90.0f),new Student("李四",22,90.0f),new Student("王五",20,99.0f),new Student("赵六",20,70.0f),new Student("孙七",22,100.0f)} ;

java.util.Arrays.sort(stu) ;//进行排序操作

for(int i=0;i

System.out.println(stu[i]) ;

}

}

};

View Code

孙七 22 100.0王五20 99.0张三20 90.0李四22 90.0赵六20 70.0

注意:

如果在此时Student类中没有实现Comparable接口,则在执行时会出现以下异常:

wf3r5YK50PS1AAAAABJRU5ErkJggg==

分析比较器的排序原理

实际上比较器的操作,就是经常听到数据结构中的二叉树的排序算法,通过二叉树进行排序,之后利用中序遍历的方式把内容依次取出来。

排序的基本原理:使用第一个元素作为根节点,之后如果后面的内容比根节点要小,则放在左子树,如果内容比根节点的内容要大,则放在右子树。

eQAAAABJRU5ErkJggg==

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值