Java список файлов не сортируется с помощью Comparator - PullRequest
0 голосов
/ 17 июня 2019

У меня есть список файлов, который содержит некоторые файлы.List<File> filesToProcess = new ArrayList();

Элементы этого списка:

abc20190101.txt
abc20190103.txt
abc20190105.txt
abc20190102.txt
abc20190104.txt

Поэтому я хочу отсортировать его по именам файлов: я написал следующий фрагмент кода:

Collections.sort(filesToProcess, new Comparator<File>() {
   @Override
   public int compare(File file1, File file2) {
      return file1.getName().compareTo(file2.getName())>0 ? 1 : 0;
   }
});

Но, похоже, это не работает.

Фактически при печати на консоль я получаю тот же порядок, в котором был создан список.Может кто-нибудь, пожалуйста, помогите.

1 Ответ

0 голосов
/ 17 июня 2019

Попробуй это.Я создал список файлов из предоставленных имен.

      String[] filenames = {
            "abc20190101.txt", "abc20190103.txt", "abc20190105.txt",
            "abc20190102.txt", "abc20190104.txt"
      };

      List<File> filesToProcess =
            Arrays.stream(filenames).map(File::new).collect(
                  Collectors.toList());

      Collections.sort(filesToProcess, new Comparator<File>() {
         @Override
         public int compare(File file1, File file2) {
            // just use compareTo here since String implements Comparable<String>
            return file1.getName().compareTo(file2.getName());
         }
      });

      filesToProcess.forEach(System.out::println);
...