首页 > 试题广场 >

Comparable和Comparator区别是什么?

[问答题]
Comparable和Comparator区别是什么?
Comparable可作为一个类的内部排序实现,Java中一些普通类型如String、Integer等都实现了该接口,我们直接使用即可。
Comparator是外部排序接口,使用策略模式,一个类的排序规则在基于“开闭原则”时,可通过实现Compartor制定多个比较排序策略,供该类采用。可用于Collections.sort()、Arrays.sort()以及一些内部有序的类(SortedSet、SortedMap等)。
发表于 2021-03-05 12:08:28 回复(0)
1.Comparator位于包java.util下,而Comparable位于包java.lang下
2.Comparable接口将比较代码嵌入自身类中,而Comparator在一个独立的类中实现比较。
3.Comparator接口的比較方法compare(A,B)有兩個參數,Comparable的比較方法compareTo(A)只有1個參數
发表于 2021-01-27 14:34:58 回复(0)
Bznna
发表于 2022-02-20 12:40:26 回复(0)
Comparable在java.long包下,为实现该接口的子类所有对象添加自然排序规则,是类自提供的比较器,需要在目标类中实现Comparable接口,并编写比较规则。
Comparator在java.util包下,是java.util提供的一个比较器,可以用于需要比较排序,但未实现Comparable的类,属于外部提供的,可以通过增加类来实现对象的比较、排序功能,也可以使用Collections.sort(),在该排序工具中传入排序目标对象与Comparator的匿名对象实现无入侵排序。
发表于 2021-05-08 15:47:52 回复(0)
Comparable是一个排序接口,实现该接口意味着该类支持排序,Comparator是比较器,需要新建一个类用于充当比较器。
Comparable比较简单,但需要修改源代码,Comparator不用修改源代码,而是新增一个比较类,只需要调用的时候将对象和比较器一同传入sort中即可,
并且在Comparator中用户可以自己实现复杂的逻辑。
发表于 2021-04-16 09:32:28 回复(0)
  • Comparable有一个CompareTo(T o)方法,实现该接口的类可以直接排序,相当于内排序.
  • Comparator的方法较多,外部排序接口,可以在Collections.sort(List<t> list,Comparator<? super T> c)和Arrays.sort(T[] a,Comparator<? supere T> c)中作为排序类传入.</t>
发表于 2020-12-31 21:09:57 回复(0)