Comparator用法中o1-o2的问题

本文探讨了在编程中实现排序时,如何通过Comparator来定义升序和降序。关键在于根据比较结果返回-1、0或1。当o1-o2为负数时,o1排在o2之前,实现升序;反之,o2-o1为负数时,则实现降序。排序的核心在于正确实现比较函数,系统会根据返回值自动调整元素顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么o1-o2就是升序,o2-o1就是降序呢?

因为在comparator里面,-1代表小于,0代表等于,1代表大于
你这样写的话,应该只是按照长度排序吧
在进行比较的时候需要返回-1或者0,如果不是就需要交换,
你写的o1代表前一个元素,o2代表后一个元素
也就代表前一个元素必须小于后一个元素,在这里也就是前一个比后一个短
如果你要从大到小,就改成o2-o1,也就是o2-o1需要返回-1,那么前面就比后面大了

o1值的是集合中的第一个对象

o2是第二个对象

当遍历到第一个对象o1的时候 去减o2 如果是负数或者0 就不需要换位置,如果是整数就换位置

所以就是升序

反之 o2-o1的时候 如果是负数或者0不需要换位置,所以一定是降序。

这个排序是系统写好的,你只需要实现comparator,给他一个比较的函数,返回-1,0,1就可以了,具体怎么实现这个函数是由你定的,系统只考虑返回结果

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值