更新时间:2019-09-04 10:14:11 来源:极悦 浏览1625次
Comparable和Comparator是JavaCoreAPI提供的两个接口。从它们的名字,我们可以告诉他们可能用于以某种方式比较东西。但究竟是什么,它们之间有什么区别?以下是回答此问题的两个示例。这些简单的例子比较了两个HDTV的尺寸。阅读代码后,如何使用ComparablevsComparator是显而易见的。
1.Comparable
Comparable由类实现,以便能够将自身的对象与其他一些对象进行比较。类本身必须实现接口才能比较其实例。实现所需的方法是compareTo。这是一个例子:
输出:索尼更好。
2.Comparator
在某些情况下,你可能不希望更改类并使其具有可比性。在这种情况下,Comparator如果要基于某些属性/字段比较对象,则可以使用。例如,可以根据“高度”或“年龄”等对2个人进行比较(使用可比较的方法无法做到这一点。)
实现所需的方法是compare。现在让我们用另一种方法来比较这些电视的大小。一种常见的用途Comparator是分类。bothCollections和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
这篇文章到这里就结束了,大家对本次知识点是否理解了呢?如果有疑问可以登录“极悦IT培训官网”咨询在线客服老师哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习