Start here. This is the direct spoken answer to practice first.
Overview
The distinction is not just syntax: it is about who owns the ordering rule and how many valid orderings exist.
Comparable<T> defines a type's natural ordering through compareTo, so the rule lives with the type. A Comparator<T> is an external ordering strategy, which is useful when a type has several valid sort orders or cannot be changed. For example, LocalDate has a natural chronological order, while employees might be sorted by name, hire date, or salary using different comparators. Comparator factory methods can compose criteria and define null handling.