1.Comparator是java.util中的一个比较的接口。 2. 如果我们想要控制某个类的次序,而这个类并没有继承Comparable接口,那么我们就可以使用Comparator接口。 3. 比较的规则:大致和上面的规则相同,不过也有不同的地方,详情请看下面的代码。 4.源代码: packagejava.util;publicinterfaceComparator<T>{intcompare(T o1, ...
Comparable 是一个内置接口,用于定义对象的自然排序。如果一个类实现了 Comparable 接口,那么该类的实例就可以直接进行排序。接口中的方法如下:compareTo 方法:比较当前对象和传入对象。如果:返回负数:当前对象小于传入对象。返回零:两者相等。返回正数:当前对象大于传入对象。Comparator 接口 Comparator 是一个策略...
实现Comparator: importjava.util.Comparator;/** * 比较test.first * */publicclassComparator1implementsComparator<test> {@Overridepublicintcompare(test o1, test o2){if(o1.first<o2.first)return-1;if(o1.first==o2.first)return0;elsereturn1; } } importjava.util.Comparator;/** * 比较test.second...
通过实现Comparable接口,类本身就能够定义对象与其他对象的比较方式。 Comparator:适用于我们希望通过外部提供排序规则的情况,特别是当类没有实现Comparable接口时,或者我们需要改变对象的默认排序方式时。 2. 排序的灵活性 Comparable:一旦对象实现了Comparable接口,它的比较规则就固定了,比较方式只能由compareTo方法决定。如...
Comparable 接口 Comparable 是一个内置接口,用于定义对象的自然排序。如果一个类实现了 Comparable 接口,那么该类的实例就可以直接进行排序。接口中的方法如下: compareTo 方法:比较当前对象和传入对象。如果: 返回负数:当前对象小于传入对象。 返回零:两者相等。 返回正数:当前对象大于传入对象。 Comparator 接口 Compara...
,它们默认实现了Comparable 接口,实现了 compareTo 方法,我们可以直接使用。 而对于一些自定义类,它们可能在不同情况下需要实现不同的比较策略,我们可以新创建 Comparator 接口,然后使用特定的 Comparator 实现进行比较。 这就是 Comparable 和 Comparator 的区别。
定制排序:java.util.Comparator 使用背景: 当元素没有实现java.lang.Comparable接口而又不方便改代码,或者是实现了Comparable接口,也指定了两个对象的比较大小的规则,但此时不想按照预定义的方法比较大小。 所以又增加了一个java.util.Comparator接口。强行对多个对象进行整体排序的比较。 重写compare(Object o1,Object o2...
* * 综上所述:Comparable是内部比较器,而Comparator是外部比较器。 * 一个类本身实现了Comparable比较器,就意味着它本身支持排序;若它本身没实现Comparable,也可以通过外部比较器Comparator进行排序。 */ public class CompareComparatorAndComparableTest{ public static void main(String[] args) { // 新建ArrayLi...
Comparator是一个FunctionalInterface,需要实现compare方法:int compare(T o1, T o2); Comparator在java.util包中,代表其是一个工具类,用来辅助排序的。在讲Comparable的时候,我们提到Comparable指定了对象的natural ordering,如果我们在添加到可排序集合类的时候想按照我们自定义的方式进行排序,这个时候就需要使用到...
我们知道,要使类的对象支持排序,类需要实现Comparable接口。而要在不修改类本身的情况下定义多种排序规则,则可以使用Comparator接口。所以两者均用于排序,但使用方式不同。 1 Comparable 接口 Comparable接口定义如下: packagejava.lang; publicinterfaceComparable<T>{ ...