Java中的Comparable vs. Comparator
小伙伴们注意了!
小编在这里给大家送上关注福利:
搜索微信公众号“速学Java”关注即可领取小编精心准备的资料一份!
Comparable和Comparator是Java Core API提供的两个接口。
从它们的名字,我们可以看出它们可能在某种程度上被用来比较东西。
但它们到底是什么?它们之间有什么区别?
下面是回答这个问题的两个例子。
简单的例子比较了两个HDTV的大小。
在阅读代码之后,如何使用Comparable和Comparator是显而易见的。
1. Comparable
Comparable由类实现,以便能够将自身的对象与其他对象进行比较。
类本身必须实现接口,以便能够比较它的实例。
实现所需的方法是compareTo()。
举个例子:
2. Comparator
在某些情况下,您可能不希望更改类并使其具有可比性。
在这种情况下,如果希望基于某些属性/字段比较对象,可以使用Comparator。
例如,可以根据“身高”或“年龄”等对两个人进行比较(不能使用comparable)。
实现所需的方法是compare()。
现在让我们用另一种方法来比较这些电视的大小。
比较器的一个常见用途是排序。
集合和数组类都提供使用比较器的排序方法。
输出:
通常我们可以使用Collections.reverseOrder()方法来获得降序比较器。如下:
输出:
3.什么时候使用哪个?
简而言之,实现Comparable的类将是Comparable,这意味着它的实例可以彼此进行比较。
主要的类实现了比较器将用于两种情况:1)它可以传递给一个方法,比如Collections.sort()或Arrays.sort(),允许精确控制排序顺序和2)也可以用来控制某些数据结构的顺序,如排序集(例如TreeSet)或分类地图(例如,TreeMap)。
例如,创建树集。
我们既可以传递构造函数一个比较器,也可以使对象类具有可比性。
方法1 -树集(比较器比较器)
方法2 -实现可比的
最后,想学习Java的小伙伴们!
关注“速学java”公众号就可以拿到一份我为大家准备的Java学习资料!
对Java感兴趣的小伙伴也可以加 小编V❤: suxuejava