I will assume you mean a large number of Date objects (because all java.util.Date Objects should be roughly the same size).
I suspect the best way to do your sorting will be to use Collections.sort(List<Date>). You would have to prove that that method was too slow or doesn't sort the way you want before you look for other options.
But another option would be to use a collection that orders objects as they are inserted. Since you allow doubles of the same Date the best bet would be a PriorityQueue<Date>. This pushes the cost of sorting forward to the addition of objects, but means there is little/no cost to reading the Dates in order.
When you use an un-order collection, or one that uses insertion order like List, you then use Collections.sort(). It means there is little cost to adding new objects, but before you read them you need to sort which can cost you time.
So if you need a continuous adds/reads you might find it easier and more efficient to use a PriorityQueue. If you collect a large number of Dates then after collecting them need to read them in order then Collections.sort might be better.