Comparable provides a 'natural' sorting order for a class via compareTo() method (implemented INSIDE the class). Comparator provides custom/external sorting logic via compare() method (implemented in a SEPARATE class). A class can implement only one Comparable but can have many Comparators.
Comparable: Students sorted by ID (natural order, defined in Student class). Comparator: Students sorted by name, GPA, or graduation date (custom orderings, separate classes).
When would you prefer Comparator over Comparable? Provide scenarios.