JAVA中,为什么说使用比较器Comparator比 实现Comparable接口要灵活一些?什么样对象不支持自比较?
如果能举一个简单的例子就好了,例子不用太详细,只要能说明灵活在哪就行了,我只是纠结于灵活这一点。谢谢!...
如果能举一个简单的例子就好了,例子不用太详细,只要能说明灵活在哪就行了,我只是纠结于灵活这一点。谢谢!
展开
1个回答
推荐于2017-09-07
展开全部
comparable 和 Comparator 都是用来实现集合中的排序的
只是Comparable是在集合内部定义的方法实现的排序
Comparator是在集合外部实现的排序
所以,如想实现排序,就需要在集合外定义Comparator接口的方法compare()或在集合内实现Comparable接口的方法compareTo()
Comparable是一个对象本身就已经支持自比较所需要实现的接口(如String Integer自己就可以完成比较大小操作)
而Comparator是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较。
实现这个接口comparable里的函数compareTo,可以自定义比较的方法,就是想怎么比较;
但是comparator是一个比较器,可以实现很多的比较器,比如说要比较一头猪,你可以实现一个按照重要比较的比较器,也可以实现一个按照别的东西比较的比较器,如果你要按照不同方式比较的话,可以让那个猪实现comparable接口,然后再compareTo函数里调用不同的比较器
不知道说明白的没有
只是Comparable是在集合内部定义的方法实现的排序
Comparator是在集合外部实现的排序
所以,如想实现排序,就需要在集合外定义Comparator接口的方法compare()或在集合内实现Comparable接口的方法compareTo()
Comparable是一个对象本身就已经支持自比较所需要实现的接口(如String Integer自己就可以完成比较大小操作)
而Comparator是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较。
实现这个接口comparable里的函数compareTo,可以自定义比较的方法,就是想怎么比较;
但是comparator是一个比较器,可以实现很多的比较器,比如说要比较一头猪,你可以实现一个按照重要比较的比较器,也可以实现一个按照别的东西比较的比较器,如果你要按照不同方式比较的话,可以让那个猪实现comparable接口,然后再compareTo函数里调用不同的比较器
不知道说明白的没有
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询