当前位置:网站首页>类的比较大小(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);
}
}
边栏推荐
猜你喜欢
MySQL----多表查询
System delay tasks and scheduled tasks
语音直播系统——做好敏感词汇屏蔽打造绿色社交环境
Alibaba "MySQL Growth Manual" Lite Edition
【 Leetcode string, the string transform/hexadecimal conversion 】 HJ1. The length of the string last word HJ2. Calculation of a certain number of characters appear HJ30. String merging processing
如何查看微信小程序服务器域名并且修改
中科驭数等单位牵头发布行业首部DPU评测方法技术白皮书
“绿色低碳+数字孪生“双轮驱动,解码油气管道站升级难点 | 图扑软件
【个人总结】2022.7月结
浅析PM2实用入门指南
随机推荐
Go-5-简单介绍fmt库
SSRF(服务器端请求伪造)
NXP i.MX 8M Mini工业核心板B2B版本,4核ARM [email protected]设计
高并发 MySQL 性能优化指南,自取
CNN flower classification
codeforces k-Tree (dp still won't work)
树状DP(记忆化搜索)PAT甲级 1079 1090 1106
阿里巴巴《MySQL成长手册》精简版
PAT甲级 1137 期终成绩
【无标题】
如何利用PHP实现词法分析器与自定义语言
MySQL (2)
【无标题】
剑指Offer 49.丑数 动态规划
开篇-开启全新的.NET现代应用开发体验
【无标题】
Basic management of system storage -- mounts, partitions, user quotas
IPtables and binlog
PAT甲级 1145 哈希 - 平均查找时间
太香了!阿里Redis速成笔记,从头到尾全是精华!