专栏/Java 中的 Comparable 与 Comparator

Java 中的 Comparable 与 Comparator

2022年03月22日 03:37--浏览 · --喜欢 · --评论
粉丝:629文章:112

  ComparableComparator是 Java Core API 提供的两个接口。从它们的名字中,我们可以看出它们可能以某种方式用于比较事物。但是它们到底是什么,它们之间有什么区别?以下是回答这个问题的两个例子。简单的例子比较了两个 HDTV 的大小。阅读代码后如何使用 Comparable vs. Comparator 是显而易见的。

1. 可比

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

2. 比较器

  在某些情况下,您可能不想更改类并使其具有可比性。在这种情况下,Comparator如果您想根据某些属性/字段比较对象,可以使用。例如,可以根据 `height` 或 `age` 等来比较 2 个人(这不能使用可比较来完成。)

需要实现的方法是compare()。现在让我们用另一种方法按尺寸比较这些电视。一种常见的用途Comparator是排序。Collections和类都Arrays提供了一种使用Comparator.

输出:

通常我们可能会使用Collections.reverseOrder()方法来获取降序比较器。如下所示:


输出:

3. 什么时候用哪个?

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

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

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

方法 1 - TreeSet(Comparator 比较器)

方法 2 - 实施 Comparable

学习更多java知识关注微信公众号  HOME十二  了解更多


投诉或建议