博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java比较器Comparable接口和Comaprator接口
阅读量:6227 次
发布时间:2019-06-21

本文共 2176 字,大约阅读时间需要 7 分钟。

java的比较器有两类,分别是Comparable接口和Comparator接口。

在为对象数组进行排序时,比较器的作用非常明显,首先来讲解Comparable接口。

让需要进行排序的对象实现Comparable接口,重写其中的compareTo(T o)方法,在其中定义排序规则,那么就可以直接调用java.util.Arrays.sort()来排序对象数组,实例如下:

View Code
class Student implements Comparable
{ private String name; private int age; private float score; public Student(String name, int age, float score) { this.name = name; this.age = age; this.score = score; } public String toString() { return name+"\t\t"+age+"\t\t"+score; } @Override public int compareTo(Student o) { // TODO Auto-generated method stub if(this.score>o.score)//score是private的,为什么能够直接调用,这是因为在Student类内部 return -1;//由高到底排序 else if(this.score
o.age) return 1;//由底到高排序 else if(this.age

程序运行结果:

sunliu 22 100.0

wangwu 20 99.0
zhangsan 20 90.0
lisi 22 90.0

但是在设计类的时候,往往没有考虑到让类实现Comparable接口,那么我们就需要用到另外的一个比较器接口Comparator。

从上面的实例我们可以发现,compareTo(T o)只有一个参数,而Comparator接口中必须要实现的compare(T o1,T o2)就有两个参数。

代码实例:

View Code
package edu.sjtu.ist.comutil;import java.util.Comparator;class Student {    private String name;    private int age;    private float score;        public Student(String name, int age, float score) {        this.name = name;        this.age = age;        this.score = score;    }    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 float getScore() {        return score;    }    public void setScore(float score) {        this.score = score;    }    public String toString()    {        return name+"\t\t"+age+"\t\t"+score;    }}class StudentComparator implements Comparator
{ @Override public int compare(Student o1, Student o2) { // TODO Auto-generated method stub if(o1.getScore()>o2.getScore()) return -1; else if(o1.getScore()
o2.getAge()) return 1; else if(o1.getAge()

上述程序的运行结果与代码实例1一样。

转载地址:http://gzxna.baihongyu.com/

你可能感兴趣的文章
java添加录音,java录音程序
查看>>
php xml 没有报文头,解决php输出xml设置header头Content-type:text/xml的方法
查看>>
php简化URL路径,php – 修改(简化)主题标题以便在url中显示
查看>>
php设计的个人页面成品,PHP仿个人博客(1)数据库与界面设计
查看>>
php函数改变表格颜色,php把一个颜色变深的函数示例开发详解
查看>>
go php 组合,Go语言组合和方法集
查看>>
matlab求图像峰度与斜度,python中的图像偏斜和峰度
查看>>
php 身份认证 claim,安全性 – 使用PHP对/ etc / shadow对用户进行身份验证的最安全方法?...
查看>>
oracle中sql中文乱码,oracle中文字符乱码终极解决
查看>>
oracle存储过程俩表查询,oracle存储过程查询多表的有关问题
查看>>
oracle中zh_concat的用法,Oracle内部函数 wmsys.wm_concat 替换办法及思考
查看>>
oracle10 冷恢复到11g,oracle 11g数据库冷备与恢复
查看>>
oracle solaris cluster 4,甲骨文推出Oracle Solaris Cluster 4.0
查看>>
oracle java web console,对 Oracle Java Web Console 软件进行故障排除
查看>>
oracle 11g 冗余,Oracle 11gR2 – 当2个故障组中的1个发生故障时,如何从正常冗余中恢复...
查看>>
php webservice 证书,PHP WebService客户端验证
查看>>
linux杀掉cpu使用率高的进程,linux – 在X时间后杀死CPU占用率高的进程?
查看>>
linux驱动被哪些进程使用,linux中驱动异步通知应用程序的方法
查看>>
linux浏览器联网输不了密码,Ubuntu下使用chrome浏览器每次打开都需要输入密码的解决...
查看>>
linux .最新 内核,求问Linux最新内核版本以及发布日期。
查看>>