#两分钟学会使用Java Core API提供的两个“比较”接口

Comparable和Comparator是Java Core API提供的两个接口。从它们的名字,我们可以告诉他们可能用于以某种方式比较东西。但究竟是什么,它们之间有什么区别?以下是回答此问题的两个示例。这些简单的例子比较了两个HDTV的尺寸。阅读代码后,如何使用Comparable vs Comparator是显而易见的。

如果有想学习java的程序员,可来我们的java学习扣qun:943111692,免费送java的视频教程噢!我整理了一份适合18年学习的java干货,送给每一位想学的小伙伴,并且每天晚上8点还会在群内直播讲解Java知识,欢迎大家前来学习哦。

1.Comparable

Comparable由类实现,以便能够将自身的对象与其他一些对象进行比较。类本身必须实现接口才能比较其实例。实现所需的方法是compareTo()。这是一个例子:

输出:索尼更好。

2.Comparator

在某些情况下,你可能不希望更改类并使其具有可比性。在这种情况下,Comparator如果要基于某些属性/字段比较对象,则可以使用。例如,可以根据“高度”或“年龄”等对2个人进行比较(使用可比较的方法无法做到这一点。)

实现所需的方法是compare()。现在让我们用另一种方法来比较这些电视的大小。一种常见的用途Comparator是分类。both Collections和Arraysclasses都提供了一个使用a的排序方法Comparator。

输出:

松下 三星 索尼

通常我们可以使用Collections.reverseOrder()方法来获得降序比较。如下:

输出:

[3,1,2] [1,2,3] [3,2,1]

3.何时使用哪个?

简而言之,实现的类Comparable将具有可比性,这意味着它可以相互比较实例。

实现的类Comparator将主要用于两种情况:1)它可以传递给排序方法,例如Collections.sort()或Arrays.sort(),以允许精确控制排序顺序和2)它还可以用于控制某些数据的顺序结构,例如有序集(例如TreeSet)或有序映射(例如TreeMap)。

例如,创建一个TreeSet。我们可以将构造函数传递给比较器,也可以使对象类具有可比性。

方法1 - TreeSet

方法2 - Comparable

这篇文章到这里就结束了,大家对本次知识点是否理解了呢?如果有疑问或者指教请在评论中提出大家一起解决。

猜你喜欢

转载自blog.csdn.net/qq_43202482/article/details/85159440