我有一个Task类,如下所示(使用Java 8 Time API)。
class Task {
LocalDateTime start;
LocalDateTime end;
Set<String> actionItems;
}
我有两个排序(首先是开头,然后是结尾)包含此类任务实例的列表,比方说List<Task> tasksList1
和List<Task> tasksList2
。我想组合重叠的任务(通过在需要时断开任务,并从重叠到单个新任务对象的其他任务中添加actionItem)。
例如,假设我有一个名为T1的任务,从2015年1月1日开始,到2015年1月31日结束,其中包含操作项A和B.然后用户创建一个从01开始的新任务T2 / 15/2015,于2015年2月15日结束,并将行动项目C添加到其中。当我合并时,我应该得到三个Task对象,如下所示。
要进行可视化,如果两个列表中的任务对象在时间轴中如下所示:
> [-----] [-----] [----] [-----------------]
> [-----] [---------------] [------]
然后生成的任务列表将包含如下任务。
> [--][-][--] [-----] [-----][----][--] [-][------][-----]`
重叠任务应该将actionItems组合在两个重叠期间重叠的任务中。
处理此问题的最有效方法是什么?目前我正在尝试使用PeekableIterator的不同选项,但还没有运气。任何使用JodaTime而不是Java 8 API的解决方案也是受欢迎的。