黑马程序员技术交流社区
标题:
Comparable和Comparator两接口的主要用法与区别.
[打印本页]
作者:
余松霖
时间:
2011-12-23 08:26
标题:
Comparable和Comparator两接口的主要用法与区别.
Comparable和Comparator两接口的主要用法与区别. 望详解下.谢谢
作者:
胡家福
时间:
2011-12-23 08:29
comparable 和 Comparator 都是用来实现集合中的排序的
只是Comparable是在集合内部定义的方法实现的排序
Comparator是在集合外部实现的排序
所以,如想实现排序,就需要在集合外定义Comparator接口的方法compare()或在集合内实现Comparable接口的方法compareTo()
Comparable是一个对象本身就已经支持自比较所需要实现的接口(如String Integer自己就可以完成比较大小操作)
而Comparator是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较。
作者:
袁泽宇
时间:
2011-12-23 09:07
1.Comparable接口是在java.lang类中的,而Comparator接口是在java.util类中的。
2.Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。
作者:
王胜利
时间:
2011-12-23 09:19
Comparator 和Comparable都是接口,两者之间可以说没什么关系。Comparator位于包java.util下,而Comparable位于包java.lang下。通俗的说:Comparator是一个比较器,相当于一种工具,它定义了两个方法,分别是 int compare(T o1, T o2)和 boolean (Object obj),所以你可以通过实现这个接口来是定义你所有需要的比较器,如比较俩个人的大小,对象人有姓名、性别、年龄等属性,你在定义这个比较器的时候就可以在compare方法中对传入的俩个参数(person1,person2)的年龄进行大小的比较,从而确定这俩个人的大小。
而Comparable接口是你要是定义的类要实现的一个接口(如果这个类的实例需要和同一类的别的实例比较大小,而这个大小关系你希望是你自己定义的),它只提供了 int compareTo(T o)方法,也就是说假如我定义了一个Person类,这个类实现了 Comparable接口,那么当我实例化Person类的person1后,我想比较person1和一个现有的Person对象person2的大小时,我就可以这样来调用:person1.comparTo(person2),通过返回值就可以判断了;而此时如果你定义了一个 PersonComparator(实现了Comparator接口)的话,那你就可以这样:PersonComparator comparator= new PersonComparator();comparator.compare(person1,person2);。
作者:
王胜利
时间:
2011-12-23 09:20
Comparator 和Comparable都是接口,两者之间可以说没什么关系。Comparator位于包java.util下,而Comparable位于包java.lang下。通俗的说:Comparator是一个比较器,相当于一种工具,它定义了两个方法,分别是 int compare(T o1, T o2)和 boolean (Object obj),所以你可以通过实现这个接口来是定义你所有需要的比较器,如比较俩个人的大小,对象人有姓名、性别、年龄等属性,你在定义这个比较器的时候就可以在compare方法中对传入的俩个参数(person1,person2)的年龄进行大小的比较,从而确定这俩个人的大小。
而Comparable接口是你要是定义的类要实现的一个接口(如果这个类的实例需要和同一类的别的实例比较大小,而这个大小关系你希望是你自己定义的),它只提供了 int compareTo(T o)方法,也就是说假如我定义了一个Person类,这个类实现了 Comparable接口,那么当我实例化Person类的person1后,我想比较person1和一个现有的Person对象person2的大小时,我就可以这样来调用:person1.comparTo(person2),通过返回值就可以判断了;而此时如果你定义了一个 PersonComparator(实现了Comparator接口)的话,那你就可以这样:PersonComparator comparator= new PersonComparator();comparator.compare(person1,person2);。
作者:
王胜利
时间:
2011-12-23 09:20
Comparator 和Comparable都是接口,两者之间可以说没什么关系。Comparator位于包java.util下,而Comparable位于包java.lang下。通俗的说:Comparator是一个比较器,相当于一种工具,它定义了两个方法,分别是 int compare(T o1, T o2)和 boolean (Object obj),所以你可以通过实现这个接口来是定义你所有需要的比较器,如比较俩个人的大小,对象人有姓名、性别、年龄等属性,你在定义这个比较器的时候就可以在compare方法中对传入的俩个参数(person1,person2)的年龄进行大小的比较,从而确定这俩个人的大小。
而Comparable接口是你要是定义的类要实现的一个接口(如果这个类的实例需要和同一类的别的实例比较大小,而这个大小关系你希望是你自己定义的),它只提供了 int compareTo(T o)方法,也就是说假如我定义了一个Person类,这个类实现了 Comparable接口,那么当我实例化Person类的person1后,我想比较person1和一个现有的Person对象person2的大小时,我就可以这样来调用:person1.comparTo(person2),通过返回值就可以判断了;而此时如果你定义了一个 PersonComparator(实现了Comparator接口)的话,那你就可以这样:PersonComparator comparator= new PersonComparator();comparator.compare(person1,person2);。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2