对于自定义类,我们要想进行两个实体类的对比,有两种方式
方式一:直接实现Comparable,然后重写compareTo方法即可
public class Person implements Comparable<Person> { private int num;//学号 public Person(int num) { this.num = num; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } @Override public int compareTo(Person o) { return this.num - o.getNum(); } }
方式二:新建一个类,实现Comparator
class PersonComparator implements Comparator<Person> { @Override public int compare(Person o1, Person o2) { int num1 = o1.getNum(); int num2 = o2.getNum(); return num1 > num2 ? 1 : (num1 == num2 ? 0 : -1); } }两种方式的区别:
1.Comparable在java.lang包下,类直接实现,实现compareTo方法即可
2.comparator在java.util下,需要重新写一个类实现comparator,是策略模式,不改变对象本身