Структура данных для планирования времени? - PullRequest
0 голосов
/ 28 ноября 2018

Мне нужна структура данных, которая может правильно моделировать блоки времени, такие как встречи.Например, у каждой встречи есть время, когда оно начинается, и время, когда оно заканчивается.Мне нужно иметь очень быстрый доступ к таким вещам, как:

  • Конфликтует ли указанное время начала и окончания с существующим событием?

  • Чтособытия существуют в указанное время начала и окончания?

В идеале структура данных может моделировать что-то похожее на изображение ниже.

enter image description here

Я думал об использовании бинарного дерева поиска (например, Java TreeMap), но я не могу придумать, какое значение key или я бы использовал.Существует ли единая структура данных или комбинация структур данных, которая способна моделировать это?

1 Ответ

0 голосов
/ 28 ноября 2018

Гуава Table, вероятно, подойдет для вашего случая использования, в зависимости от того, что именно вы хотите индексировать.

Наивным подходом будет индексирование по имени,затем время суток, а затем определите, занят ли этот конкретный блок этим конкретным человеком.

Это приведет к тому, что экземпляр объекта станет ...

Table<String, LocalDateTime, Boolean> calendar = TreeBasedTable.create();

Вы бы заполнили распределение каждого человека через определенный интервал.Вы можете установить, что это за интервал - если он разбит на 15, 30 или 1 час (как определено в таблице).

Чтобы узнать, занято ли время, вы ищете ближайший интервал квремя, которое вы хотите назначить человеку.Для этого вы использовали бы метод column(), чтобы узнать, есть ли какая-либо доступность, или вы можете получить конкретную информацию и получить строку для отдельного человека.Это означает, что вам нужно получить два значения;время начала, которое вы хотите, и сколько минут ваш интервал истекает.Эту часть мне придется оставить читателю в качестве упражнения.

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