As given in K&B book,
an element in a list can compare itself to another of its own type in only 1 way using its compareTo() method
But a Comparator is external to the element type you'r comparing- its a separate class . So you can make as many of these as you like!
So when using compareTo() method of Comparable interface, the class which calls Collections.sort(<List>) implements Comparable interface and write compareTo() method only once. Hence you can compare your objects only in 1 way.
But if you want to compare your objects by more than one way, then
you should use compare() method of Comparator interface.
As given an example in K&B, to compare songs by only title, use compareTo() method.
But if you want to sort songs by its artist or by its title, to implement this, use compare() method.
I hope this clears all your confusion.