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?

23 Answers
23

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *