Гуава Table
, вероятно, подойдет для вашего случая использования, в зависимости от того, что именно вы хотите индексировать.
Наивным подходом будет индексирование по имени,затем время суток, а затем определите, занят ли этот конкретный блок этим конкретным человеком.
Это приведет к тому, что экземпляр объекта станет ...
Table<String, LocalDateTime, Boolean> calendar = TreeBasedTable.create();
Вы бы заполнили распределение каждого человека через определенный интервал.Вы можете установить, что это за интервал - если он разбит на 15, 30 или 1 час (как определено в таблице).
Чтобы узнать, занято ли время, вы ищете ближайший интервал квремя, которое вы хотите назначить человеку.Для этого вы использовали бы метод column()
, чтобы узнать, есть ли какая-либо доступность, или вы можете получить конкретную информацию и получить строку для отдельного человека.Это означает, что вам нужно получить два значения;время начала, которое вы хотите, и сколько минут ваш интервал истекает.Эту часть мне придется оставить читателю в качестве упражнения.