Comparator and Comparable 及Collections and Collection 的区别及联系?
来源:互联网 发布:未来教育二级c语言 编辑:程序博客网 时间:2024/05/17 05:19
Collection是接口,Collections是类,这是二者最明显的区别。Collections提供了一些static方法来对Collection对象进行处理,比如:对Collection对象的复制、添加元素、修改元素、对元素进行排序、交换俩个元素的位置、取Collection的子集等等操作。另外Collection是j2sdk中集合框架的根接口,所有的其他特殊类型的结合接口或者类都直接或间接的实现了这个接口。
而Comparator和Comparable都是接口,俩者之间可以说没什么关系。Comarator位于包java.util下,而Comparable位于包java.lang下。通俗的说:Comparator是一个比较器,相当于一种工具,它定义了俩个方法,分别是 int compare(T o1,T o2)和 boolean (Objectobj),所以你可以通过实现这个接口来是定义你所有需要的比较器,如比较俩个人的大小,对象人有姓名、性别、年龄等属性,你在定义这个比较器的时候就可以在compare方法中对传入的俩个参数(person1,person2)的年龄进行大小的比较,从而确定这俩个人的大小。
而Comparable接口是你要是定义的类要实现的一个接口(如果这个类的实例需要和同一类的别的实例比较大小,而这个大小关系你希望是你自己定义的),它只提供了 int compareTo(T o)方法,也就是说假如我定义了一个Person类,这个类实现了Comparable接口,那么当我实例化Person类的person1后,我想比较person1和一个现有的Person对象person2的大小时,我就可以这样来调用:person1.comparTo(person2),通过返回值就可以判断了;而此时如果你定义了一个PersonComparator(实现了Comparator接口)的话,那你就可以这样:PersonComparatorcomparator= newPersonComparator();comparator.compare(person1,person2);。
详细的说明看看sun的java API文档,说的很清楚。
=======
1。 关于Comparable和Comparator,昨天刚好有个帖子,整理了一下。
public interface Comparable {
public abstract int compareTo(Object o);
}
看Comparable的方法,可以看到是要用类继承Comparable,再重写compareTo(Object o);这个方法
。会把 o cast到当前的类。再在方法里比较当前的对象和o 的顺序或者大小,如果大于或者在集合里是
后面就返回正值,小于或者前面就返回负值,相当或者顺序无关就返回0。
用法:
public class Some implements Comparable {
public Some () {
}
public int compareTo(Object obj) {
//比较this 中的属性和(Some)obj中的属性,做判断。
}
}
排序或者比较时:
//在其他类中使用,s是一个集合里有很多Some对象。
Collections.sort(s);
另一个Comparator
public interface Comparator {
public abstract int compare(Object o1, Object o2);
public abstract boolean equals(Object obj);
}
Comparator是在java.util这个包里,一般来说当对于要根据其他属性,或变量来定义一个类的中对象和
另一个对象的顺序时,会用到Comparator,如果正常按照自然顺序排列,直接implements Comparable就
可以。或者因为它的compare方法传入的是两个要比较的对象,所以可以独立于要比较的对象。
用法:
public class Some () {
}
import java.util.Comparator;
public class SomeComparator implements Comparator{
public int compare(Some s1,Some s2){
//写代码,获得.sequence 和比较一下s1,s2,
//如果返回正值,s1大。如果返回负值,s2大。
}
在其他类,你需要排序的地方
public Collection getcollectionOrderby(List l) {
///l里面都是Some的对象
retuen Collections.sort(l,new SomeComparator());
}
对于下面的也通用:
Arrays.{binarySearch(), sort()}, Collections.{binarySearch(), max(), min(), sort()},
2。
Collections 是JAVA中一个实用类,用来对Collection,ArrayList,Set等进行基本的操作,封装了常用的方法,都是静态的,可以直接调用。
Collection是一个interface,他是JAVA中所有Collection Framework里的根节点,其他集合类都要继承他。看API有说明。
- Comparator and Comparable 及Collections and Collection 的区别及联系?
- Comparator and Comparable 及Collections and Collection 的区别及联系?
- Comparator and Comparable 及Collections and Collection 的区别及联系
- Java 中Collection和Collections 、Comparable 和Comparator的区别
- Collections的Comparable,Comparator
- Comparable和Comparator的联系和区别
- Comparable和Comparator的区别和联系
- Comparable and Comparator API
- Comparable and Comparator
- 关于comparator以及comparable的区别及应用
- Java Comparable 和Comparator接口的使用及区别
- Java Comparable 和Comparator接口的使用及区别
- Comparator,Comparable接口区别及应用
- Comparable和Comparator用法及区别
- java Comparable 和Comparator 详解及区别
- Comparable与Comparator区别联系
- Collections.sort()方法的使用及Comparable和comparator的qubie
- Comparator and Comparable in Java
- 解决jBPM Designer插件与MyEclipse插件冲突的办法
- tomcat访问日志详细配置教程
- 网页配色之黄金分割法
- 建库建表建约束 添加密码
- IE7 CSS trouble
- Comparator and Comparable 及Collections and Collection 的区别及联系?
- Apache服务httpd.conf 中文详细解读
- C#调用API
- Svn 学习
- 【Bing Map学习系列】(7)——如何使用Bing Maps Silverlight Control汇总
- J2EE程序的性能优化技巧 【转】
- 张亚勤新作《变革中的思索》谈高科技人才管理
- Hadoop跟Sector/Sphere对比
- 程序精简第一步之百鸡问题(减少循环提高运行速度)