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)); } }
结果与上面一样,这两种方式都可以实现对象的比较,具体还是看自己的爱好。