当前位置:网站首页>类的比较大小(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);
}
}
边栏推荐
猜你喜欢
随机推荐
23.支持向量机的使用
PAT Class A 1145 Hash - Average Lookup Time
Qt | 关于容器类的一些总结
2022 Security Officer-A Certificate Exam Questions and Mock Exam
做好私域流量!全民拼购就可以了。
Go-5-简单介绍fmt库
redis学习四redis消息订阅、pipeline、事务、modules、布隆过滤器、缓存LRU
8大软件供应链攻击事件概述
622. 设计循环队列 : 数组模拟循环队列
Go-6-常用命令-go包管理问题-两个路径-GO111MODULE
【无标题】
setTimeout与setInterval的区别
Apache的管理及web优化
该死的单元测试,写起来到底有多痛?
PAT甲级 1137 期终成绩
servlet交互过程图详解,servlet的常见问题,创建web项目(一)
esp32之arduino配置下载提速
Qt | Qt 的项目文件.pro 文件详解
2022 VMware下载安装教程
祝蔡徐坤生日快乐!