接口 Comparable<T>和java.util包中的 接口 Comparator<T>
在功能上是类似的,Comparable是要实现compareTo()方法,需要一个参数;Comparator是要实现compare()方法,需要两个参数。
仅在参数个数就能看成这两个接口的应用场景。实现Comparable接口的对象自身具备比较性,即可以传入一个同类对象,进行比较。
而实现Comparator接口的类更像是一个第三方的比较器,它需要调用者传入2个参数,把2个参数进行比较。
至于选择哪一种,根据实际需要确定。当与集合类共同配合使用时,个人感觉使用Comparator更灵活一点。
举个例子,TreeSet类提供了一个排序的集合。当添加一个对象时,需要调用比较方法,以确定要添加的对象应该存放的位置。
若要实现此种功能,要么是让传入的对象具备比较性,即实现Comparable接口,也可以给TreeSet传入一个Comparator比较器。
这时若是使用Comparator比较器完全可以使用内部类完成,代码会较少。
|