我有两个ArrayList,其中的日期时间包含进入和退出的时间
EntryTime退出时间
Entry-Exit数据在第一个ArrayList中,而2到4之间的数据是另一个ArrayList。
现在,您在顶部1处看到的入口出口,我需要将该时间分叉,因为那是对我要存储在第一个数组中的系统的手工输入,其余部分是系统生成的,它们位于第二个数组。所以从2到4,我无法更改正确的数据。我只需要更改第一条记录,即手动输入。我需要使它们与众不同且不重叠,最终结果将如下所示:
EntryTime ExitTime
加粗的DateTime(结果部分中的5到7)现在变得不同且不重叠,而第一部分中的数据从2到4相同。更改后的值从5到7。 我无法考虑是否应该遍历范围并减少时间。 请帮助并告诉我是否需要其他信息。 我进行了足够的搜索,但是找不到所需的答案,或者可能是我听不懂。
答案 0 :(得分:1)
如果按时间顺序对2-4个条目进行排序,则可以循环浏览系统生成的条目,对于i-th
位置,您可以检查i-th
之间(当前条目)退出日期和i+1-th
(下一个)条目日期(如果有),然后检查另一个ArrayList
,以查看是否有条目在“空白”之前开始并在“间隙”之后结束您在系统生成的ArrayList
中找到了。
伪代码:
for(int i=0; i<arrayList2.size()-1; i++){
if(arrayList2[i].exitDate is_before arrayList2[i+1].entryDate){
fillTheGapIfPossible(arrayList2[i], arrayList2[i+1]);
}
}
fillTheGapIfPossible(entry1, entry2){
for(int i=0; i<arrayList1.size(); i++){
if(arrayList1[i].entry is_before entry1.exitDate &&
arrayList1[i].exitDate is_after entry2.entryDate){
makeNewEntry(entry1.exitDate, entry2.entryDate);
}
}
}
arrayList2
是系统生成的列表。