比较接口:Comparable和Comparator

  Comparable和Comparator是两个用于定义对象之间比较规则的接口。

  一、public interface Comparator<T>

  Comparator接口中有两个方法(不止两个):

  1、int compare(Object obj1,Object obj2)

  obj1>obj2,返回正值;

  obj1=obj2,返回0;

  obj1<obj2,返回负值。

  通过重写compare()方法,可以改变对象排序的方式。

 

  2、boolean equals(Object obj)

  拿obj和调用该方法的对象按规则比较,相同返回true,不同返回false。

 

  二、public interface Comparable<T>

  其中只有一个方法:int compareTo(T o)

  当需要让集合对其中的对象进行排序时,可以让对象实现(也必须实现)Comparable接口,这意味着通过compareTo()定义比较规则。

 

  三、比较

  Comparable接口是一种侵入式的设计,即他必须让被排序的类中实现compareTo()方法。如果一个类是第三方提供的,此时是无法通过Comparable接口进行对象排序操作的。

  为了解决这一问题,必须使用比较器Comparator。

  集合类可以通过比较器来精确定义按照何种规则排序,Comparator可以让代码不入侵类的内部定义排序规则。

 

  显然,比较器Comparator比Comparable接口更加灵活,不入侵类,更符合单一职责的设计哲学。

  当有了新的比较方式,只需要修改比较规则类,即实现Comparator接口的类。

 

 

 

转载于:https://www.cnblogs.com/bigbigbigo/p/8566930.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值