假设您有一些对象具有多个字段,可以通过以下方式进行比较:
public class Person {
private String firstName;
private String lastName;
private String age;
/* Constructors */
/* Methods */
}
所以在这个例子中,当你问是否:
a.compareTo(b) > 0
你可能会问 a 的姓氏是否在 b 之前,或者 a 是否比 b 大,等等……
在不增加不必要的混乱或开销的情况下,在这些类型的对象之间启用多重比较的最简洁方法是什么?
java.lang.Comparable
接口只允许一个字段比较- 在我看来,添加大量比较方法(即
compareByFirstName()
、compareByAge()
等…)很混乱。
那么最好的方法是什么?
原文由 Yuval Adam 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以实施一个
Comparator
比较两个Person
对象,并且您可以检查任意多个字段。您可以在比较器中放入一个变量,告诉它要与哪个字段进行比较,尽管只编写多个比较器可能会更简单。