黑马程序员技术交流社区

标题: 求解 关于集合 [打印本页]

作者: 杨强    时间: 2011-10-26 01:20
标题: 求解 关于集合
Comparable和Comparator区别是什么

作者: 石头    时间: 2011-10-26 01:26
comparable&   Comparator    都是用来实现集合中的排序的,只是Comparable是在集合内部定义的方法实现的排序,Comparator是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义Comparator接口的方法compare()或在集合内实现Comparable接口的方法compareTo()。

Comparable是一个对象本身就已经支持自比较所需要实现的接口(如String    Integer自己就可以完成比较大小操作)   
   
   而Comparator是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较。

这是搜索到的答案。。。本人还是菜鸟。
作者: olkldksl    时间: 2011-10-26 07:15
这是集合排序要用到的,一种排序方法是让元素自身具备比较性,元素类需要实现comparable接口,覆盖compareTo()方法;
另一种排序方法是当元素自身不具备比较性,或者具备的比较性不是所需的,这时候就需要让集合自身具备比较性,定义一个比较器(实现了comparator接口的类对象),将比较器作为参数,传递给集合的构造函数。

作者: 刘浩    时间: 2011-10-26 08:32
他们是TreeSet集合两种排序方式。

comparable:
  让元素自身具备比较性,需要元素死心啊comparable接口。覆盖comparareTO方法。
           这种排序有局限性:1.元素自身不具备比较性。2.具备的比较性不是所有需要的。
所有有了第二种排序、

Comparator:
    需呀定义一个类实现Comparator接口,覆盖compare方法,并将接口的子类对象作为参数传递给treeSer集合的够杂函数,也就是自定义比较器的方法。

如果自然排序和比较器同时存在,以比较强为主.

作者: 黄健    时间: 2011-10-26 08:58
java api 中是这样解释的
Comparable接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序,类的 compareTo 方法被称为它的自然比较方法。实现此接口的对象列表(和数组)可以通过Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。

Comparator强行对某个对象 collection 进行整体排序 的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。



作者: 杨强    时间: 2011-10-26 09:22
了解了 3q
作者: 想好了再写    时间: 2011-10-26 09:39
来过,学习了
话说我好像没看这里呢!!
看来还得回去看教程里前面的东西了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2