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

猜你喜欢

转载自blog.csdn.net/suxue_java/article/details/88355260
今日推荐