I have seen classes which implement both Comparable and Comparator. What does this mean? Why would I use one over the other?
Comparable is for objects with a natural ordering. The object itself knows how it is to be ordered. Comparator is for objects without a natural ordering or when you wish to use a different ordering.
Comparable
Comparator