Не открывайте и не изменяйте коллекцию в Comparator
.Компаратор следует использовать только для определения того, какой объект стоит перед другим.Два объекта, которые должны сравниваться, предоставляются в качестве аргументов.
Date
сам по себе сопоставим, поэтому, используя обобщенные значения:
class MovieComparator implements Comparator<Movie> {
public int compare(Movie m1, Movie m2) {
//possibly check for nulls to avoid NullPointerException
return m1.getDate().compareTo(m2.getDate());
}
}
И не создавайте экземпляр компаратора для каждого вида.Использование:
private static final MovieComparator comparator = new MovieComparator();