Существует очень простой и удобный способ решения проблемы без дополнительного компаратора. Просто закодируйте измененную дату в строку с именем файла, отсортируйте ее, а затем снова удалите.
Используйте строку фиксированной длины 20, поместите в нее измененную дату (длинную) и заполните начальными нулями. Затем просто добавьте имя файла к этой строке:
String modified_20_digits = ("00000000000000000000".concat(Long.toString(temp.lastModified()))).substring(Long.toString(temp.lastModified()).length());
result_filenames.add(modified_20_digits+temp.getAbsoluteFile().toString());
Что здесь происходит:
Имя файла1: C: \ data \ file1.html Последнее изменение: 1532914451455 Последнее изменение 20 цифр: 00000001532914451455
Имя файла1: C: \ data \ file2.html Последнее изменение: 1532918086822 Последнее изменение 20 цифр: 00000001532918086822
преобразует имена файлов в:
Имя файла1: 00000001532914451455C: \ data \ file1.html
Имя файла2: 00000001532918086822C: \ data \ file2.html
Затем вы можете просто отсортировать этот список.
Все, что вам нужно сделать, это снова обрезать 20 символов позже (в Java 8 вы можете обрезать его для всего массива всего одной строкой, используя функцию .replaceAll)