Ваш пользовательский класс может реализовывать интерфейс "Comparable", который требует реализации метода CompareTo. В методе CompareTo вы можете определить, что означает, что объект на меньше или больше другого объекта. Так что в вашем примере это может выглядеть примерно так:
public class MyCustomClass implements Comparable<MyCustomClass>{
..........
@Override
public int compareTo(MyCustomClass a) {
if(this.getStartDate().before(a.getStartDate())){
return -1;
}else if(a.getStartDate().before(this.getStartDate())){
return 1;
}else {
return 0;
}
}
Отрицательное число указывает, что это меньше, чем сравниваемый объект. Положительное число указывает, что это больше, чем по сравнению с объектом, а ноль означает, что объекты равны.
Затем вы можете использовать collection.sort (myList), чтобы отсортировать список без подачи в компаратор. Этот метод также имеет преимущество в том, что вещи сортируются автоматически, если вы используете структуры данных отсортированной коллекции, например TreeSet или TreeMap.
Вы можете проверить эту статью, если хотите больше узнать об интерфейсе Comparable (раскрытие: я автор;))
https://nullbeans.com/the-java-comparable-interface-automatic-sort-of-collections/