Какая коллекция для быстрого поиска следующих элементов? - PullRequest
2 голосов
/ 10 октября 2019

У меня есть объект с полем currentDate. Он должен будет получить доступ к n в следующие рабочие дни. У меня есть файл .csv со всеми рабочими днями.

Мое текущее решение:

  • Создание ArrayList<LocalDate> workdays из .csv.
  • Get currentDateIndexот workdays.indexOf(currentDate).
  • Получите следующие n следующие дни, повторяя по workdays.get(currentDateIndex + i).

Что мне не нравится в этом:

  • Нет способаобеспечение того, что список workdays действительно отсортирован или не содержит дубликатов.
  • O (n) сложность метода indexOf.

Существует ли коллекция, которая обеспечитчто рабочие дни уникальны и отсортированы, и они могут быстро вернуться в следующие n рабочих дней, если им дано currentDate?

1 Ответ

2 голосов
/ 10 октября 2019

Используйте TreeSet<LocalDate>. Это позволит сохранить даты уникальными и отсортированными.

И вы можете получить следующие даты, позвонив по номеру tailSet(E fromElement, boolean inclusive) и перебрав возвращенные значения Set, чтобы получить следующие n элементы, следующие за данным элементом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...