小编典典

如何按多个字段比较对象

all

假设您有一些对象有几个字段,它们可以通过以下方式进行比较:

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()等…)很混乱。

那么解决这个问题的最佳方法是什么?


阅读 63

收藏
2022-04-25

共1个答案

小编典典

您可以实现Comparator比较两个Person对象的
a,并且可以检查任意数量的字段。您可以在比较器中放入一个变量,告诉它要与哪个字段进行比较,尽管只编写多个比较器可能会更简单。

2022-04-25