Какая коллекция Java подходит для поиска имен файлов с максимальной отметкой времени в огромном массиве? - PullRequest
4 голосов
/ 31 октября 2019

У нас огромный список, который обновляется ежедневно.

Мы получаем ежедневные файлы несколько раз в день с одинаковыми именами, и каждый файл имеет разные временные метки (формат может быть любым, но включает в себя дд, мм, гг, час, минуты, секунды), например:

ABC_2013-07-25T00:00:00
BBC_2013-07-25T01:00:00
ABC_2013-07-25T02:00:00
BBC_2013-07-25T02:00:00
ABC_2013-07-26T00:00:00
BBC_2013-07-26T01:00:00
BBC_2013-07-26T02:00:00
and so on.....

Я хочу использовать коллекции Java и хочу получать файл с последней отметкой времени для каждого дня, например

For 31st latest one are 
ABC_2013-07-25T02:00:00
BBC_2013-07-25T02:00:00

For 1st latest one files are
ABC_2013-07-26T00:00:00
BBC_2013-07-26T02:00:00

Как мы можем легко добиться этого с помощью коллекций Java?

Идея приходитИмеется в виду использование Collections.sort (), сравнение и поиск max, но есть ли прямой путь в коллекциях Java для достижения этого, когда мы не требуем ручного сравнения?

Ответы [ 3 ]

1 голос
/ 31 октября 2019

Я могу предложить вам создать HashMap. Вы можете поместить ключ в качестве первой строки файла (ABC_, BBC, .. и т.

0 голосов
/ 31 октября 2019

Вы можете использовать TreeSet для него, выполнив следующие шаги.

  1. Создайте класс, содержащий имя файла и метку времени.
  2. Реализуйте методы равенства и хэш-кода в вышеприведенном классе.
  3. Создание компаратора для сортировки списка вышеупомянутого класса.
  4. Создание экземпляра TreeSet и передача компаратора, созданного на предыдущем шаге.
  5. Используйте tailSet () и headSet () для полученияверхняя граница или нижняя граница списка.
0 голосов
/ 31 октября 2019

если ваши данные не дублируются (или если вы можете удалить дубликаты), вы можете попробовать TreeSet, он реализует SortedSet и автоматически сортирует коллекцию при вставке. Но вы должны также учитывать производительность, если объем данных большой.

...