user1210233 user1210233 - 3 days ago 5
Java Question

Writing a default Comparator class in Java

I am implementing a generic heap class in Java. There are two constructors for this class, one is the default constructor with no parameters. The other one takes in a comparator object that the user can pass in so that the user can control how the elements of a heap are compared. Now if the user uses the default constructor, I want my class to use to default comparator object. The compare method of this object simply calls the compareTo() method (part of the Comparable interface). Is there a way to do this and if so, how?

Answer

I guess a generic comparator would look like that:

public class ComparableComparator<T extends Comparable<T>> implements Comparator<T> {
  @Override
  public int compare(T lhs, T rhs) {
    return lhs.compareTo(rhs);
  }  
}
Comments