java 自定义比较器

Comparator 和 Comparable 相同点
Comparator 和 Comparable都是java的接口,并且是用来对自定义的class比较大小的。

Comparator 和 Comparable 的区别

Comparable
  对于Comparable接口来说,它往往是进行  比较类  需要  实现   的接口。
   该比较器仅包含一个有compareTo()方法,只有一个参数,返回值为int。返回值大于0表示对象大于参数对象;小于0表示对象小于参数对象;等于0表示两者相等
   是你要比较的类 要 实现
   Comparable 实现在 Person类的内部:
   public class Persion implements Comparable {..compareTo() 比较Person的大小..}
   因为已经实现了比较器,那么Person现在是一个可以比较大小的对象了,它的比较功能和String完全一样,
   可以随时随地的拿来比较大小,因为Person现在自身就是有大小之分的。
   Collections.sort(personList)可以得到正确的结果。

Comparator
   对于Comparator接口来说,它的实现者被称为比较器,
   它包含一个compare()方法,有两个参数,返回值与Comparable的compareTo()方法一样,
   不同之处是Comparator接口一般不会被集合元素类所实现,而是单独实现或者匿名内部类方式实现。
   Comparator 实现在Person的外部,此时Person类的结构不需要有任何变化,如:
   public class Person{ String name; int age }
   然后另外定义一个比较器类:
   public PersonComparator implements Comparator {..compare() 比较Person的大小..}
   在PersonComparator里面实现了怎么比较两个Person的大小。
   所以,用这种方法,当要对一个 personList进行排序的时候,除了要传递personList过去,还需要把PersonComparator传递过去,
   因为怎么比较Person的大小是在PersonComparator里面实现的,如:Collections.sort( personList , new PersonComparator() )

(77条消息) Comparable 和 Compator的区别_Liam_Fang_的博客-优快云博客_compator

Comparable 的使用,我们需要在源码Person上重写compareTo方法,

而在Compator的使用中我们无需在源码Person上重写相关的方法,而是只需要新建一个比较器类即可,该比较器实现了Compator接口的compare方法。

所以Comparable可以称之为内部比较器,

而Compator可以称之为外部比较器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值