噔——噔——咚——
又是一章硬骨头,LSP、协变、反协变、泛型、委派手拉手,comparator、comparable安能辨我是雌雄。
这里对comparator和comparable的比较再做一点补充,笔记里好像提到的部分很少:
·Comparator和Comparable都是Java中用于比较对象的接口,但它们的使用场景和实现方式有所不同。
·Comparable接口是一个内部比较器,它允许在类内部实现对象的比较。如果一个类实现了Comparable接口,那么它的对象可以通过Collections.sort()或Arrays.sort()方法进行排序。实现Comparable接口要求重写compareTo()方法,该方法返回一个整数值,表示该对象与另一个对象的大小关系。
·Comparator接口是一个外部比较器,它允许在类外部实现对象的比较。Comparator接口中有一个compare()方法,用于比较两个对象的大小关系。如果需要对一个类进行排序,但该类没有实现Comparable接口,那么就可以使用Comparator接口来实现排序。Comparator接口的实现方式是创建一个新的比较器类,该类实现Comparator接口,并重写compare()方法。
因此,Comparable接口是在类内部定义的,而Comparator接口是在类外部定义的。如果一个类实现了Comparable接口,则它的对象可以直接进行排序,而如果需要对一个类进行排序但该类没有实现Comparable接口,则需要使用Comparator接口来实现排序。