专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 常见问题 如何使用Java Core提供的两个“比较” API?

如何使用Java Core提供的两个“比较” API?

更新时间:2019-09-04 10:14:11 来源:赢咖4 浏览1530次

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

  1.Comparable

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

image.png

  输出:索尼更好。

  2.Comparator

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

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

image.png

  输出:

  松下三星索尼

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

image.png

  输出:

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

  3.何时使用哪个接口?

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

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

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

  方法1-TreeSet

image.png

  方法2-Comparable

image.png

  这篇文章到这里就结束了,大家对本次知识点是否理解了呢?如果有疑问可以登录“赢咖4IT培训官网”咨询在线客服老师哦。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>