java.lang.Comparable是一个对象本身就已经支持自比较所需要实现的接口(如String Integer自己就可以完成比较大小操作)即
对象必须实现这个接口。
Comparable比较用的方法是Arrays.sort(对象数组)。
Comparable而是需要对象实现Comparable<对象>
java.util.Comparator是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较。 Comparator比较用的方法是Collections.sort(list, new Comparator()); Comparator需要自己写一个比较类。
compareTo和compare方法返回1则表示需要交换 -1则不需要交换
java.util.Comparator是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较。 Comparator比较用的方法是Collections.sort(list, new Comparator()); Comparator需要自己写一个比较类。
compareTo和compare方法返回1则表示需要交换 -1则不需要交换
package test.Compare;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class CompareTest {
public static void main(String[] args) {
List<PersonA> list = new ArrayList<PersonA>();
PersonA p1 = new PersonA(23);
list.add(p1);
PersonA p2 = new PersonA(21);
list.add(p2);
PersonA p3 = new PersonA(29);
list.add(p3);
Object pArr[] = list.toArray();
Arrays.sort(pArr);
for (Object v : pArr) {
System.out.println(v);
}
List<PersonB> list1 = new ArrayList<PersonB>();
PersonB p4 = new PersonB(23);
list1.add(p4);
PersonB p5 = new PersonB(21);
list1.add(p5);
PersonB p6 = new PersonB(29);
list1.add(p6);
//从小到大顺序
Collections.sort(list1, new SortPersonBAge());
for (PersonB v : list1) {
System.out.println(v);
}
//从大到小
Collections.reverse(list1);
for (PersonB v : list1) {
System.out.println(v);
}
}
};
// Comparable是java.lang包里面的Arrays.sort(pArr);
class PersonA implements Comparable<PersonA> {
private int age;
public PersonA(int age) {
super();
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(PersonA o) {
if (this.age > o.getAge())
return 1;
else if (this.age < o.getAge())
return -1;
return 0;
}
@Override
public String toString() {
return this.age + " ";
}
}
class PersonB {
private int age;
public PersonB(int age) {
super();
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return this.age + " ";
}
}
//Comparable Comparator是java.util包体里面的
class SortPersonBAge implements Comparator<PersonB> {
@Override
public int compare(PersonB o1, PersonB o2) {
if (o1.getAge()>o2.getAge()) {
return 1;
} else if (o1.getAge()<o2.getAge()) {
return -1;
}
return 0;
}
};