如何通过多个字段比较对象假设您有一些有几个字段的对象,它们可以通过以下方法进行比较:public class Person {
private String firstName;
private String lastName;
private String age;
/* Constructors */
/* Methods */}因此,在这个例子中,当您问:a.compareTo(b) > 0你可能会问,一个人的姓是否在乙之前,或者甲比乙老,等等.在不增加不必要的杂乱或开销的情况下,实现这类对象之间的多个比较的最干净的方法是什么?java.lang.Comparable接口只允许一个字段进行比较。添加许多比较方法(即compareByFirstName(), compareByAge()等等)在我看来是乱七八糟的。那么,做这件事最好的方法是什么呢?
3 回答

函数式编程
TA贡献1807条经验 获得超9个赞
Comparator
Person

ibeautiful
TA贡献1993条经验 获得超5个赞
Comparator.comparing((Person p)->p.firstName) .thenComparing(p->p.lastName) .thenComparingInt(p->p.age);
Comparator.comparing(Person::getFirstName) .thenComparing(Person::getLastName) .thenComparingInt(Person::getAge);
@Overridepublic int compareTo(Person o){ return Comparator.comparing(Person::getFirstName) .thenComparing(Person::getLastName) .thenComparingInt(Person::getAge) .compare(this, o);}
添加回答
举报
0/150
提交
取消