对比较器Comparator的理解

        在Java编程中,接口Comparator是经常被使用的,比如向TreeSet和TressMap中放入元素时、对List进行排序时等都需要用Comparator指定排序规则!但是,具体怎么指定的好多人不太明白,我也不是很明白。现在把我理解的写出来,大家看对不对,互相讨论一下!

       在使用Comparator接口时,我们要重写compare方法,真正的比较逻辑是compare方法中实现的。

       在API文档中,对方法compare的说明如下:

       Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.

       第一个参数大于第二个参数时,返回一个正数。也就是说,在执行时,“执行器”(不知道叫什么,目前就这样叫吧!哈)它是根据返回值排序的,如果是正数,它认为第一个参数比第二个参数大,第一个参数排在第二个参数后面,反之。所以,为了实现我们想要的排序时,我们就要遵循这个逻辑!

       实在不好表达,我们举个例子吧!

       比如有一个Person对象,按age进行排序,如果我们想实现升序,在compare中比较时,我们就得让“正数=第一个参数排在后面”,和“年龄大的排在后面”相挂钩,返回第一个参数的年龄减去第二个参数的年龄就行。反之。

       语言很难表达清楚。大家可以看看下面的例子体会一下:

 

策略模式实现排序

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值