Comparator 可用于比较未实现 Comparable 的类的对象。您已经学习了如何使用 Comparable 界面(本节)来比较元素。 Java API 中的几个类,例如 String、Date、Calendar、BigInteger、BigDecimal 和基本类型的所有数字包装类都实现 Comparable 接口。 Comparable 接口定义了 compareTo 方法,该方法用于比较实现 Comparable 接口的同一类的两个元素。
如果元素的类没有实现 Comparable 接口怎么办?这些要素可以比较吗?您可以定义一个比较器来比较不同类的元素。为此,请定义一个实现 java.util.Comparator 接口并重写其 compare 方法的类。
public int Compare(T element1, T element2)
如果 element1 小于 element2,则返回负值;如果 element1 大于 element2,则返回正值,并且为零如果它们相等。
GeometricObject 类在抽象类部分中介绍。 GeometricObject 类未实现 Comparable 接口。要比较 GeometricObject 类的对象,您可以定义一个比较器类,如下面的代码所示。
第 4 行实现了 Comparator。第 5 行重写了 Compare 方法来比较两个几何对象。该类还实现了可序列化。对于比较器来说,实现 Serialized 通常是一个好主意,因为它们可以用作可序列化数据结构中的排序方法。为了使数据结构成功序列化,比较器(如果提供)必须实现 Serialized.
下面的代码给出了一个返回两个几何对象之间更大的对象的方法。使用 GeometricObjectComparator.
比较对象程序在第 7-8 行创建了一个 Rectangle 和一个 Circle 对象(Rectangle 和 Circle 类定义于抽象类部分)。它们都是GeometricObject的子类。程序调用 max 方法来获取面积较大的几何对象(第 10 行)。
创建 GeometricObjectComparator 并将其传递给 max 方法(第 10 行),此比较器在 max 方法中使用来比较中的几何对象第 16 行。
Comparable 用于比较实现 Comparable 的类的对象。 Comparator 可用于比较未实现 Comparable.
的类的对象使用Comparable接口比较元素称为使用自然顺序进行比较,使用Comparator接口比较元素称为使用比较器。
以上是比较器接口的详细内容。更多信息请关注PHP中文网其他相关文章!