转载:http://blog.csdn.net/ggf007/archive/2010/01/15/5192633.aspx
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 (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);。
详细的说明看看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有说明。
分享到:
相关推荐
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
在Java编程中,`java.util.Collections`类扮演着极其重要的角色,它提供了一系列静态方法用于操作和处理各种类型的`Collection`。这些方法不仅简化了开发过程,提高了代码效率,还增强了程序的可读性和可维护性。...
1. **排序**:`Collections.sort(List<T> list)`可以对一个`List`进行升序排序,如果元素实现了`Comparable`接口,或者提供了自定义的比较器`Comparator`。 2. **反转**:`Collections.reverse(List<T> list)`可以...
Comparable 和 Comparator 都是 Java Collections 框架中的比较器接口,但是它们在实现和应用场景上有所不同。Comparable 是一个接口,用于比较对象本身。Comparator 是一个接口,用于比较两个对象。 HashMap 和 ...
- `sort(List<T> list)`: 这个方法用于对List接口的实现类对象进行原地排序,要求List中的元素必须实现Comparable接口或者在调用时传入自定义的Comparator。例如,对整型ArrayList进行升序排序可以使用`Collections...
如果`List`中的元素没有实现`Comparable`接口,或者你需要自定义排序规则,可以使用`Collections.sort(List<T> list, Comparator<? super T> c)`方法。此方法接受一个`Comparator`参数,`Comparator`是一个接口,...
比如,`sort()`方法的实现依赖于`Comparable`接口或`Comparator`接口,而`binarySearch()`则需要一个已经排序的列表。此外,源码中还隐藏了许多优化技巧和异常处理策略,这些都是提升代码质量和性能的关键。 通过对...
本章主要介绍了Java中Collections类的常用方法,包括shuffle()、sort()等,以及Set集合的基本概念,特别是HashSet和TreeSet的区别。同时,讲解了如何对自定义类型进行排序,即实现Comparable接口或使用Comparator。...
除了 `Collections.sort()`,还有 `Collections.reverseOrder()` 方法,它可以创建一个降序排列的 `Comparator` 实例,用于定制排序。 ```java List<Integer> numbers = new ArrayList(Arrays.asList(1, 3, 2, 4));...
`Collections.sort(List<T> list)` 用于对List进行排序,支持自然排序及通过比较器实现的定制排序。`sort` 方法内部实际上会调用 `list.set(i, e)` 方法,因此需要确保List支持此操作。 2. **查找** - **线性...
- **排序与比较**:通过`Comparable`和`Comparator`接口,可以方便地对集合中的元素进行排序。 ### 实际应用示例 假设我们需要创建一个学生名单,使用Java Collections可以这样实现: ```java import java.util....
java 集合类的排序主要是用Collections.sort方法,Collections和Collection是不一样的,前者是类,后者是接口,在这里,我主要是想说明它的sort方法的几种类型, 提示:实现接口的方法时,只需要比较两个数,大的返回1,...
集合框架001-Collection接口6-9"中涉及的关键知识点,包括`Collection`接口、`ArrayList`源码分析、`Comparator`接口以及`Comparable`接口,以及`Arrays`类中的算法。 首先,`Collection`接口是Java集合框架的根...
### Collections与Generics在J2SE 1.5中的应用 #### 快速回顾Collections 在深入了解Generics之前,我们先快速回顾一下Java中的Collections框架。Collections是Java平台的一个核心特性,它为开发者提供了一组丰富...
- 对于Set,如TreeSet,元素必须实现Comparable接口,或者在创建时传入Comparator。 - 对于Map,可以对keySet或entrySet进行排序,然后通过key或entry进行操作。 总结,Java集合框架提供了多种数据结构,以适应不同...
Java集合容器概述、集合框架、List、Set、Map接口、...comparable和comparator有什么区别?Collection和Collections有什么区别?TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
Java集合框架还包含了一些工具类,如`Collections`(提供了对集合的各种操作,如排序、填充和反转)、`Comparator`(用于自定义元素比较逻辑)和`Iterator`(遍历集合元素的接口)。 至于集合排序,Java提供了两种...
5. `max()`和`min()`方法:返回Collection中的最大或最小元素,元素需要实现Comparable接口,或者可以提供自定义的Comparator。 6. `replaceAll()`方法:在List中找到所有与指定值匹配的元素,并将其替换为新的值。...
实现Comparable接口或Comparator接口,用户可以根据需要对集合中的元素进行排序。为了方便用户使用,Java平台还提供了Collections和Arrays工具类。collection.rar分别对上述内容进行详细讲解演示。