JAVA: как получить первые N сортированных записей в каталоге? - PullRequest
0 голосов
/ 29 марта 2019

Мне нужно получить N записей максимум.

Мне нужно отсортировать записи по имени (каталоги должны быть первыми).

Я хотел бы использовать Files.newDirectoryStream ()вместо File.listFiles (), чтобы избежать создания возможно большого списка (и иметь возможность остановить его в случае, если количество файлов действительно огромно).

Какой самый эффективный способ сделать это?Я думаю, мне нужно перебрать весь поток и сохранить ограниченный отсортированный список, чтобы сохранить только запись N.

Thx.

1 Ответ

0 голосов
/ 29 марта 2019
  1. Создать пустое ArrayList<File>
  2. Перебирать записи каталога и помещать их в список до тех пор, пока не будут прочитаны M элементов или все записи (M >> N)
  3. Использовать быстрый выборалгоритм перемещения первых N записей в начало списка
  4. Обрезка списка до N элементов
  5. Повторяйте шаги 2–4, пока все записи не будут прочитаны
  6. Сортировка списка
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...