两个对象之间比较
1.对象之间的比较, 通过实现Comparable
接口, 重写compareTo
方法
一.Comparable接口
Comparable接口表示自然比较。 特点:
-
实现Comparable接口的类, 可以比较大小
-
实现Comparable接口的类, 可以进行自然排序 自然排序: 从小到大排序 自定义排序: 按照自定义的规则排序
-
实现Comparable接口的类, 要重写compareTo方法 compareTo 自然比较方法 方法表示比较规则,参数是Object类型, 返回值是 int 类型。 返回值是int类型, 有三种情况: 正数, 0, 负数 。
二.Comparator接口
Comparator接口表示比较器。 特点:
总之,Comparable接口适用于实现对象的自然排序,而Comparator接口适用于实现对象的非自然排序。使用哪个接口取决于特定的需求以及对象的特性。
-
实现Comparator接口的类, 可以比较两个对象的大小
-
实现Comparator接口的类, 可以进行自定义排序 重写compare方法, 比较两个对象的大小 返回值是int类型, 有三种情况: 正数, 0, 负数 。
Arrays.sort(stus, (o1, o2) -> { // 只比较年龄 if (o1.getAge() > o2.getAge()){ return 1; } else if (o1.getAge() < o2.getAge()){ return -1; } else { return 0; } });
三.两个接口的区别
Java中的Comparable接口和Comparator接口都是用于比较两个对象的接口,但它们之间存在一些显著的区别。
-
接口方法不同:
-
Comparable接口定义了一个compareTo方法,该方法接受一个同类型的参数,返回一个整型结果。这个结果小于0表示对象小于参数,等于0表示对象等于参数,大于0表示对象大于参数。
-
Comparator接口定义了一个compare方法,该方法接受两个同类型的参数,返回一个整型结果,其行为类似于Comparable的compareTo方法。
-
-
用途和灵活性不同:
-
Comparable接口是用于定义对象之间的自然排序规则,即在类的定义时就确定了对象的排序方式。如果一个类实现了Comparable接口,那么它的对象可以进行相互比较并可以排序。
-
Comparator接口则更灵活,它可以在使用时定义排序规则。如果需要自定义一个比较器来比较对象的属性,那么可以通过实现Comparator接口并重写其中的compare方法来实现。
-
-
适用范围和限制不同:
-
Comparable接口适用于类本身具有天然的排序规则的情况,例如整数、浮点数等基本数据类型以及字符串等。对于没有天然排序规则的类,通常需要实现Comparator接口。
-
Comparator接口可以定义多种排序方式,甚至可以为同一个类定义多个不同的比较器以适应不同的排序需求。它适用于需要根据对象的某些属性或因素进行排序的情况。
-
-
对象的大小关系比较不同:
-
在Comparable接口中,比较的是对象本身的大小关系。
-
在Comparator接口中,比较的是对象的某些属性的大小关系。
-