有错之处,希望大家可以指出来,谢谢。
文章目录
概念
比较器:对两个或多个数据进行比较,以确定它们是否相等,或确定他们之间的大小关系以及排列顺序(来自于百度)。
Java中的比较器主要是通过实现Comparable与Comparator两个接口来实现的
Comparable接口
通过类继承接口,在类中对CompareTo()方法进行复写完成比较
主要实现语句:
类+implements Comparable<>{
…
public int compareTo(Work o){
return 0;
}
}
比较方法:
通过if(){}else{}语句进行判断返回值是-1,1,0中的哪一个,使用时通过返回的是-1,1,0来对比较者进行顺序的排列。
Comparable接口实现注意:接口的实现位置要在类所在的位置,比如此类是Worker类那么Comparable接口要在Worker类中实现。
例如:
public class Worker implements Comparable<Worker> {
......
......
public int compareTo(Worker o) {
if (this.salary <o.salary) {
return 1;
} else if (this.salary>o.salary) {
return -1;
} else {
//如果第一个条件相等,的比较第二个条件
if (this.age > o.age) {
return 1;
} else if (this.age < o.age) {
return -1;
} else{
return 0;
}
}
}
Comparable接口实例:
public class Worker implements Comparable<Worker> {
//public class Worker {
private String name;
private int age;
private float salary;
public Worker(String name, int age, float salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
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 getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Worker{" +
"name='" + name + '\'' +
", age=" + age +
", salary=" + salary +
'}';
}
@Override
public int compareTo(Worker o) {
if (this.salary <o.salary) {
return 1;
} else if (this.salary>o.salary) {
return -1;
} else {
if (this.age > o.age) {
return 1;
} else if