实现Comparable的称之为自然排序,你可以这样理解,一个类你实现了Comparable,那么这个类就有了自己本身的排序方式,比如你可以设置人以年龄为排序条件。
实现comparator的称之为定制排序,就是说你往集合里面加入人对象,如果他实现了comparable接口,那么就以年龄排序了,但是如果你有特殊要求,比方说以身高为排序条件,那么你不想破坏原有的自然排序规则,就可以自己实现一个类实现comparator接口,自己定制实现以身高为排序规则,将这个实现类传入到set或者map的构造函数中去,
那么set和map就将你定义的这个排序规则作为排序条件了,也就是说当两Comparable与Comparator都存在时,以Comparator比较器为主。
我觉得这么说应该很容易理解了。。。
归根结底一句话,当元素自身不具备比较性,或者具备的比较性不是所需要的。可以向集合构造函数中传入一个比较器,该比较器实现了Comparator接口并重写了compare(T o1,To2)方法来进行添加元素时的比较,这是毕老师上课时说的。 |