Comparable我称之为内比较,就是在一个实体类中实现该方法,由该实体类对象调用。然后传入另外一个该对象用于比较。
public class Person implements Comparable<Person>{
private int age;
private String name;
private String address;
@Override public int compareTo(Person o) {
if(this.age>o.getAge()){
return 1;
}else {
return -1;
}
}
public Person(int age, String name, String address) {
this.age = age;
this.name = name;
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
public class Service {
public static void main(String[] args) {
Person person1 = new Person(10,"lm","aaaa");
Person person2 = new Person(20,"po","bbbb");
Person person3 = new Person(30,"zj","cccc");
Domain domain = new Domain(18);
int i = person1.compareTo(person2);
}
}
复制代码
Comparator则是外比较,你需要传入两个对象才能完成比较。它比Comparable更灵活的一点是可以完成不对类对象之间的比较:
public class Domain {
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public Domain(int num) {
this.num = num;
}
public Domain() {
}
}
public class DomainComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
Domain domain= (Domain)o1;
Person person=(Person)o2;
if(domain.getNum()>person.getAge()){
return -1;
}else {
return 1;
}
}
}
public class Service {
public static void main(String[] args) {
Person person1 = new Person(10,"lm","aaaa");
Domain domain = new Domain(18);
int i = person1.compareTo(person2);
System.out.println(i);
DomainComparator domainComparator = new DomainComparator();
int compare = domainComparator.compare(domain, person1);
System.out.println("compare"+compare);
}
}
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END