JAVA中,为什么说使用比较器Comparator比 实现Comparable接口要灵活一些?什么样对象不支持自比较?

如果能举一个简单的例子就好了,例子不用太详细,只要能说明灵活在哪就行了,我只是纠结于灵活这一点。谢谢!

comparable 和 Comparator 都是用来实现集合中的排序的
只是Comparable是在集合内部定义的方法实现的排序
Comparator是在集合外部实现的排序

所以,如想实现排序,就需要在集合外定义Comparator接口的方法compare()或在集合内实现Comparable接口的方法compareTo()

Comparable是一个对象本身就已经支持自比较所需要实现的接口(如String Integer自己就可以完成比较大小操作)

而Comparator是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较。

实现这个接口comparable里的函数compareTo,可以自定义比较的方法,就是想怎么比较;
但是comparator是一个比较器,可以实现很多的比较器,比如说要比较一头猪,你可以实现一个按照重要比较的比较器,也可以实现一个按照别的东西比较的比较器,如果你要按照不同方式比较的话,可以让那个猪实现comparable接口,然后再compareTo函数里调用不同的比较器
不知道说明白的没有
温馨提示:内容为网友见解,仅供参考
无其他回答

JAVA中,为什么说使用比较器Comparator比 实现Comparable接口要灵活...
Comparable是一个对象本身就已经支持自比较所需要实现的接口(如String Integer自己就可以完成比较大小操作)而Comparator是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较。实现这个接口comparable里的函数compareTo,可以自定义比...

java中Comparable和Comparator两种比较器的区别
Comparable和Comparator接口都是为了对类进行比较,众所周知,诸如Integer,double等基本数据类型,java可以对他们进行比较,而对于类的比较,需要人工定义比较用到的字段比较逻辑。可以把Comparable理解为内部比较器,而Comparator是外部比较器,基本的写法如下:class Apple implements Comparable<Apple>{ int id;...

Comparable和Comparator的区别
在Java编程中,`Comparable`和`Comparator`是用于实现对象比较功能的关键接口。`Comparable`接口是一个内比较器,允许类实现与自身进行比较的功能,而`Comparator`则是一个外比较器,提供了一种灵活的比较方式,尤其在对象未实现`Comparable`接口或需要自定义比较逻辑时。当使用`Collections`类的`sort`方法对...

java的Comparable和Comparator区别
`Comparable`可以被视为一个对象内部的比较机制,它主要用于实现数据类型的自然排序规则。反之,`Comparator`作为外部比较器,通常用于更复杂或特定的比较逻辑,如排序算法。实现与使用场景 使用`Comparable`时,通常需将实现此接口的类与排序方法结合,直接使用该类创建的实例来进行比较。而借助`Comparator`,...

Java 中那些绕不开的内置接口——Comparable 和 Comparator
相比之下,Comparator接口(java.util.Comparator)更为灵活,用于自定义对象间的比较规则。即使对象未实现Comparable,或者需要非自然顺序的排序,Comparator都能提供解决方案。Collections.sort方法提供了一个重载版本,允许用户传递自定义的Comparator进行排序,比如对Car对象按照brand字段排序。在Stream操作中,...

来吧,一文彻底搞懂Java中的Comparable和Comparator
Comparator接口相较于Comparable接口,Comparator接口更加灵活。它主要提供了两个方法:compare()和equals()。compare()方法用于比较两个对象的顺序,返回值决定排序结果。而equals()方法则用于判断传入的参数是否匹配Comparator的设置。利用Comparator实现不同属性的排序示例中展示了如何创建一个Comparator,通过传入...

详解Comparable和Comparator
排序在编程中是一项基础而关键的技能。在Java中,我们可以通过两种方式实现数组、集合等容器的排序:使用Comparable接口或Comparator接口。实现Comparable接口意味着该类支持排序。一旦类实现了Comparable接口,其对象即可用于有序映射(如TreeMap)中的键或有序集合(如TreeSet)中的元素,无需额外指定比较器。...

Java中,如果想要排序,实现Comparator接口 \/\/与Comparable 的区别?
comparator接口与Comparable接口的区别 1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的,什么是自定义class: 如 public class Person{ String name; int age }.当我们有这么一个personList,里面包含了person1, person2, persion3..., 我们用Colle...

java中comparable接口与comparator接口的区别,&&请求代码示例,非常谢谢...
Comparable:要比较的对象直接实现该接口 例子:使用Comparator接口 package shwg.action;import java.util.Arrays;import java.util.Comparator;\/\/按字符串长度比较对象大小 public class Demo { public static void main(String[] args) { String[] names = {"Tom","Jerry","Andy","Lee"};Arrays....

comparable和comparator的区别
1.Comparable是对象内部需要实现的接口,如果一个对象要想用利用Array.sort进行排序,那么这个对象必须实现Comparable的接口,比较的实现是在对象的内部进行的。2.Comparator接口是在对象外实现的接口,主要是方便了对没有实现Comparable接口的对象的比较和排序,比如:当我们对已经有的一个类进行排序的时候,...

相似回答