I'm assuming that by "real time" you meant "practical, real-world situations"
Sometimes, natural ordering isn't what we need. Or maybe there is no intuitive natural ordering. If you have a collection of objects that you want to sort in different ways, you can use different comparators to do that, one comparator for each different sorting criteria.
Say you had some objects that had name, color, size, weight, and price attributes. To sort these with Collections.sort(List), the class needs to implement the Comparable interface, which defines the compareTo() method. This will be the class' natural ordering, which you can think of as its default ordering. Say you used the name attribute for natural ordering. So when you sort, these objects will ordered by name in alphabetical order.
What if you wanted to sort in reverse alphabetical order? By color? By weight? Any other way besides name in alphabetical order? If you wanted to use Collections.sort(), you'd have to use the overloaded version that takes a Comparator as its second parameter. The comparator basically encapsulates the logic for determining whether one object should be considered as coming before or after another object in a certain ordering.
See also the tutorial on ordering:
https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html