I think you are not alone who is having this doubt. Even I had this doubt for long, so I will try to answer this question in the simplest way possible.
Between Comparable and Comparator interfaces, you need to remember their sorting order.
If you want your objects to be sorted based on the natural ordering using a single element, then you should go for Comparable interface. While using Comparable, keep this in mind that it directly makes changes in the original class. Basically, it compares the objects of the same class.
Whereas Comparator is used when you want some specific sort order. Using Comparator you can achieve multiple sorting sequences. It doesn’t affect the original class and basically compares the objects, different classes.
Hope, now you have a clear picture of the difference between Comparable and Comparator.