Assume you have some objects which have several fields they can be compared by:
public class Person {
private String firstName;
private String lastName;
private String age;
/* Constructors */
/* Methods */
}
So in this example, when you ask if:
a.compareTo(b) > 0
you might be asking if a's last name comes before b's, or if a is older than b, etc…
What is the cleanest way to enable multiple comparison between these kinds of objects without adding unnecessary clutter or overhead?
java.lang.Comparable
interface allows comparison by one field only- Adding numerous compare methods (i.e.
compareByFirstName()
,compareByAge()
, etc…) is cluttered in my opinion.
So what is the best way to go about this?
Best Answer
With Java 8:
If you have accessor methods:
If a class implements Comparable then such comparator may be used in compareTo method: