而对于一些自定义类,它们可能在不同情况下需要实现不同的比较策略,我们可以新创建 Comparator 接口,然后使用特定的 Comparator 实现进行比较。 这就是 Comparable 和 Comparator 的区别。
Comparator比较器是在构造方法传入Comparator具体实现时候定义排序规则的 程序如下 publicstaticvoidmain(String[]args){TreeSet<Student>treeSet=newTreeSet<>(newComparator<Student>(){@Overridepublicintcompare(Studento1,Studento2){intnum=o1.getAge()-o2.getAge();intnum2=num==0?o1.getName().compareTo(...
在Java语言中,Comparable和Comparator都是用来进行元素排序的,但二者有着本质的区别,比如以下三个区别。 第一,字面含义不同 我们先从二者的字面含义来理解它,Comparable翻译为中文是“比较”的意思,而Comparator是“比较器”的意思。Comparable是以-able结尾的,表示它自身具备着某种能力,而Comparator是以-or结尾,表示自身...
* * 综上所述:Comparable是内部比较器,而Comparator是外部比较器。 * 一个类本身实现了Comparable比较器,就意味着它本身支持排序;若它本身没实现Comparable,也可以通过外部比较器Comparator进行排序。 */ public class CompareComparatorAndComparableTest{ public static void main(String[] args) { // 新建ArrayLi...
Comparable相当于“内比较器”,而Comparator相当于“外比较器” 实现Comparable的类,该类就具有自身比较的功能;Comparator的实现,是一个外部比较工具器 注意Comparable 和 Comparator 同时实现时,则以Comparator为主 Comparable接口# Comparable 被认为是内比较器,也是自然排序,实现该接口的类,会有自身比较的功能,则依赖com...
1.Comparable和Comparator都是用于比较数据的大小的,实现Comparable接口需要重写compareTo方法,实现Comparator接口需要重写compare方法,这两个方法的返回值都是int,用int类型的值来确定比较结果,在Collections工具类中有一个排序方法sort,此方法可以之传一个集合,另一个重载版本是传入集合和比较器,前者默认使用的就是Comparabl...
实现了该接口的类实例对象可以作为SortedMap的key或者SortedSet的元素,而无需使用一个额外的比较器-Comparator。 强烈推荐自然排序结果与equals方法保持一致(虽然不是一定的),即自然排序时两个对象相等条件为 e1.equals(e2)返回true时,e1.compareTo(e2) == 0。另外需要注意的是null对象不是任何一...
Comparator和Comparable的区别如下: Comparable用在对象本身,说明这个对象是可以被比较的,也就是说可以被排序的。例如:String和Integer之所以可以比较大小,是因为它们都实现了Comparable接口,并实现了compareTo()方法。 Comparator用在对象外面,相当于定义了一套排序算法来排序。
在创建队列的时候就把比较器传进去。 小结 不管是Comparable(比较能力)和Comparator(比较器)都是用于我们实现的类作比较。Comparable是直接实现于我们创建的类,让这个类以后自己天然具备比较能力,Comparator是我们专为某一个类写的一个比较器类,当需要的时候我们得实例化一个比较器然后传入。至于具体是怎么比较那个对象...
一、Comparator比较器 另个对象之间比较大小,Java中提供了两种比较实现方式, java.lang.Comparable接口实现,要求在被比较的对象类中实现这个接口,实现public int compareTo(对象类型 对象)这个抽象方法。 java.util.Comparator接口,在做排序的时候去定制实现排序规则,实现public int compare(对象类型 o1, 对象类型 o2)这...