Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合(如TreeSet,TreeMap存储的类都需要实现此接口),无需指定比较器。
此类需要重写compareTo方法
Comparator是比较接口,我们如果需要控制某个类的次序,而该类本身不支持排序(即没有实现Comparable接口),那么我们就可以建立一个“该类的比较器”来进行排序,这个“比较器”只需要实现Comparator接口即可。也就是说,我们可以通过实现Comparator来新建一个比较器,然后通过这个比较器对类进行排序.
两种方式最终的目的是一致的,都是需要比较排序,但是实现的方式是不一样的,比如有些如TreeSet,TreeMap存储的类都需要实现Comparable接口,具体问题具体分析,选择适合的方式。