Comparable与Comparator对象比较
Comparable与Comparator
对两个或多个数据项进行比较,以确定它们之间的大小关系及排列顺序称为比较。
1.Comparable
接口:
此接口强行对实现它的每个类的对象进行整体排序,这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。
代码实现:
定义一个实体类实现Comparable接口,并重写compareTo()方法
class Pig implements Comparable<Pig> {
private String name;
private int age;
public Pig(String name, int age) {
this.name = name;
this.age = age;
}
// get,set,toString
@Override
public int compareTo(Pig o) {
// 根据年龄比较
return this.age - o.age;
}
}
测试类:
public class Test1 {
public static void main(String[] args) {
Pig[] pigs = {new Pig("纷纷", 23), new Pig("猪猪", 25), new Pig("丽丽", 21)};
Arrays.sort(pigs);
System.out.println(Arrays.toString(pigs));
}
}
输出:
[Pig{name='丽丽', age=21}, Pig{name='纷纷', age=23}, Pig{name='猪猪', age=25}]
2.Comparator
接口:
要求自定义比较器类去实现。
public class PigComparator implements Comparator<Pig> {
@Override
public int compare(Pig o1, Pig o2) {
return o1.getAge() - o2.getAge();
}
}
测试:
public class Test1 {
public static void main(String[] args) {
Pig[] pigs = {new Pig("纷纷", 23), new Pig("猪猪", 25), new Pig("丽丽", 21)};
Arrays.sort(pigs,new PigComparator());
System.out.println(Arrays.toString(pigs));
}
}
结果与上面一样,这两种方式都可以实现对象的比较,具体还是看自己的爱好。