关于Comparable接口实现后

关于Comparable接口实现后

实现Comparable接口的类的对象已经具备了可比较大小的能力,但是,是否能够在不改变compareTo方法实现的情况下,能够选择升序或者降序?如果compareTo实现的是升序比较,那么,是不是只能通过临时创建一个Comparator对象来实现降序?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

1、compareTo() 方法用于将 Number 对象与方法的参数进行比较的。可用于比较 Byte, Long, Integer等。该方法用于两个相同数据类型的比较

这里同学说的‘不改变compareTo方法实现的情况下‘ 是指什么呢?

2、是的,升序和降序需要分开写,写在不同的类中。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 易萧 提问者 #1
    不改变compareTo方法实现的情况下,是指:当调用o1.compareTo(o2)时,实现的就是o1-o2。 compareTo本来就是描述两个对象之间的大小规则,不应该因为我们想降序排序,就改变它的规则。 比如两个数,3和5,加入list中,如果直接排序,结果就是[3,5]. 所以我的问题是,如果我想降序排序,在不改变它本身的compareTo方法的情况下,是不是只能去额外实现一个Comparator了? 因为对于Integer,我们是不可能再去改变它里面的compareTo方法了。 而且,3<5,这本就是理所应当的,改变的应当是排序的逻辑。 或者试想,现在有一个Demo类, 它分别被Test1、Test2、Test3、Test4、Test5这5个类使用了。 现在Test1需要对Demo对象降序排序,但不可能再去修改Demo的compareTo方法,如果修改了,那么Test2~Test5这四个类都将受到影响。 说白了,修改compareTo方法来达到降序排序的目的,是不符合代码关闭原则的。
    2020-08-14 15:37:08
  • 好帮手慕小脸 回复 提问者 易萧 #2
    同学你好,这里compareTo方法实现的如果是升序,那么降序可以额外写Comparator来完成 祝学习愉快~
    2020-08-14 18:48:33
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师