时间安排的数据结构?

时间:2018-11-27 23:37:11

标签: sorting data-structures

我需要一个可以正确建模时间块(例如约会)的数据结构。例如,每个约会都有一个开始时间和一个结束时间。我需要非常快速地访问以下内容:

  • 指定的开始时间和结束时间是否与现有事件发生冲突?

  • 从指定的开始时间和结束时间开始存在哪些事件?

理想情况下,数据结构可以对下图进行建模。

enter image description here

我曾考虑使用二叉搜索树(例如Java的TreeMap),但我想不出要使用什么 key value 。是否有单个数据结构或数据结构组合在建模方面很强?

1 个答案:

答案 0 :(得分:0)

番石榴Table可能适用于您的用例,具体取决于您要在其上建立什么索引。

幼稚的方法是先按名称先索引,然后再索引一天中的时间,然后不管该特定区域是否被该特定人员占用,都具有一个值。

这将使对象的实例化成为...

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

您将以给定的时间间隔填充每个人的分配。您可以设置该间隔是什么-如果间隔分为15、30或1小时(如表所定义)。

要查找是否已占用时间,请查找与要安排人员的时间最接近的时间间隔。为此,您可以使用column()方法来查看是否有任何个可用性,或者您可以确定具体性并为个人获取一行。这意味着您必须提取两个值。您想要的开始时间,无论间隔多长时间。我将不得不把那部分作为练习留给读者。