当前位置:网站首页>类的比较大小(Comparable -> compareTo(类自己实现接口),Comparator -> compare(新建一个类作为比较器))
类的比较大小(Comparable -> compareTo(类自己实现接口),Comparator -> compare(新建一个类作为比较器))
2022-08-02 15:05:00 【学习追求高效率】
7. 比较大小的接口
1. Comparable -> compareTo
这个是在类里面定义比较函数,要比较的时候,调用的是比较函数,但是这个就会限制比较的条件,所以比较器更方便一点

1.1 sort排序
1.1.1 Compara接口实现后,可以用sort之间排序
1.1.2 排序前后可用用 toString 输出数组

class Student implements Comparable<Student>{
public String name;
public int age;
public double score;
public Student(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
@Override
public int compareTo(Student o) {
return this.age-o.age;
}
}
public class Test {
public static void main(String[] args) {
Student[] students = new Student[3];
students[0] = new Student("bit",10,78.9);
students[1] = new Student("abc",4,98.9);
students[2] = new Student("gb",14,38.9);
System.out.println("排序前"+Arrays.toString(students));
sort(students);
System.out.println("排序后"+Arrays.toString(students));
}
}
1.1.3 sort排序规则
前 - 后 是从小到大
后 - 前 是从大到小
2. 比较器 Comparator -> compare
//比较器
class AgeComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return o1.age-o2.age;
}
}
class ScoreComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return (int)(o1.score-o2.score);
}
}
class NameComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return o1.name.compareTo(o2.name);
}
}
public static void main8(String[] args) {
Student[] students = new Student[3];
students[0] = new Student("bit",10,78.9);
students[1] = new Student("abc",4,98.9);
students[2] = new Student("gb",14,38.9);
System.out.println("排序前"+Arrays.toString(students));
AgeComparator ageComparator = new AgeComparator();
ScoreComparator scoreComparator = new ScoreComparator();
NameComparator nameComparator = new NameComparator();
Arrays.sort(students,nameComparator);
System.out.println("排序后"+Arrays.toString(students));
}
补充:String自带compareTo 用于字符串比较
class NameComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return o1.name.compareTo(o2.name);
}
}
边栏推荐
猜你喜欢

基于ip的证书

威纶通触摸屏如何隐藏系统设置箭头图标及通过参数进入系统设置?

OneFlow源码解析:Op、Kernel与解释器

Linux系统中mysql数据库的基本管理

中科驭数等单位牵头发布行业首部DPU评测方法技术白皮书

并发模型和I/O模型介绍

面试了个阿里P7大佬,他让我见识到什么才是“精通高并发与调优”

UnicodeEncodeError: 'gbk' codec can't encode character '\u2022' in position 178: illegal multibyte s

线程安全问题以及其解决方法
[email protected]设计"/>NXP i.MX 8M Mini工业核心板B2B版本,4核ARM [email protected]设计
随机推荐
系统存储的基本管理--挂载,分区,用户配额
es6 循环,并终止循环
PAT serie a 1137 final grades
阿里云上安装MQTT服务器
UnicodeEncodeError: 'gbk' codec can't encode character '\u2022' in position 178: illegal multibyte s
软件代码签名证书怎么申请
VPP snort插件
MySQL 的几种碎片整理方案总结(解决delete大量数据后空间不释放的问题)
Qt | 控件之 QCheckBox
状态码以及访问百度过程
TCP(传输控制协议)
Basic management of mysql database in Linux system
8大软件供应链攻击事件概述
兆骑科创双创服务平台,创业赛事活动,投融资对接平台
SQL实现将多行记录合并成一行
为什么我不再推荐枚举策略模式?
树状DP(记忆化搜索)PAT甲级 1079 1090 1106
form的编辑与展示的切换(输入框,单选多选框,上传图片,颜色选择器)适用个人信息的展示与修改
mysql 自动添加创建时间、更新时间
太帅了!我用炫酷大屏展示爬虫数据!