这两个接口,Comparable和Comparator有什么区别?

big_3_shot 2011-10-25 02:26:01
这两个我也分不大清楚,哪位大侠讲讲具体的区别?似乎知道又不知道...求教
...全文
488 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
big_3_shot 2011-10-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 java2000_net 的回复:]
Java code

class Cat implements Comparable<Cat> {
@Override
public int compareTo(Cat o) {
return 0;
}
}

class CatComparator implements Comparator<Cat> {
@Override
……
[/Quote]关于泛型的作用我只知道可以约束放入集合中元素的类型.这句class Cat implements Comparable<Cat>,猫类实现Comparable接口,为什么后面有一堆尖括号,里面放入Cat,是什么意思啊?真心求教.小弟新学,好多不懂,但是我真的想把java学会.指点...
xiongyu2006 2011-10-27
  • 打赏
  • 举报
回复
嗯,楼上已经给的很详细的。
还有一点区别Comparable和Comparator所在的包不同。

老紫竹 2011-10-27
  • 打赏
  • 举报
回复
class Cat implements Comparable<Cat> {
@Override
public int compareTo(Cat o) {
return 0;
}
}

class CatComparator implements Comparator<Cat> {
@Override
public int compare(Cat o1, Cat o2) {
return 0;
}
}


看到区别了吗?Cat自己实现Comparable,只需要给他一个被比对的猫就行了,跟自己比。
而 CatComparator 则需要给他2只猫。
big_3_shot 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 humanity 的回复:]
Comparable 是给要排序的实体本身实现的接口,而 Comparator 则是第三方。

比如:类 A 实现了 Comparable 接口,表示它可以和另一个 A 比较来达到排序的目的。
但,假设用户想点击按钮“按名字排序”,之后他又想“按QQ号排序”,这样的需求我们用 Comparable 是无法同时满足两种情况的,那么我们就需要第三方 Comparator,当我们在使用 Colle……
[/Quote]能不能拿代码示范一下...具体一点
big_3_shot 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huntor 的回复:]
Comparable 表示一个类 是有序的,有内在的前后顺序。像 String的字典序,Integer的大小。

Comparator 临时需求,非一般化。
[/Quote]"Comparator 临时需求,非一般化."这句话能不能讲详细点,拿代码举个例子什么的.比先前懂了点,但还是不形象啊...
龙四 2011-10-25
  • 打赏
  • 举报
回复
一般类实现的接口叫Comparable,见名知意,表示该类是可比较的

某些static方法可能传入一个Comparator,可用来比较不知道是否实现了Comparable接口的类,如Arrays#sort(T[] a,Comparator<? super T> c)
huntor 2011-10-25
  • 打赏
  • 举报
回复
Comparable 表示一个类 是有序的,有内在的前后顺序。像 String的字典序,Integer的大小。

Comparator 临时需求,非一般化。
humanity 2011-10-25
  • 打赏
  • 举报
回复
Comparable 是给要排序的实体本身实现的接口,而 Comparator 则是第三方。

比如:类 A 实现了 Comparable 接口,表示它可以和另一个 A 比较来达到排序的目的。
但,假设用户想点击按钮“按名字排序”,之后他又想“按QQ号排序”,这样的需求我们用 Comparable 是无法同时满足两种情况的,那么我们就需要第三方 Comparator,当我们在使用 Collections.sort() 方法时传递这个 Comparator 让它来排序。因此 Comparable 里面的方法只需要 1 个参数,因为另一个参数就是这个 A 类实例自己,而 Comparator 需要 2 个参数,它是第三方比较器,接收 2 个参数。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧