我想在 java 中创建一个函数来执行以下操作:
- 获取 vector 中的对象列表,其中包含字段
startDate
、endDate
- 获取 vector 中包含字段
startDate
、endDate
的第二个对象列表 如果对于第一个列表中的每个日期周期(startDate
到endDate
),则返回true
或false
第二个列表中相应的日期段。
但是,第二个列表中的日期段可以由连续日期填充。
例如List1(只有一个对象):Object1
(开始日期= 01/01/2010,结束日期= 01/01/2013)
如果提供 List2(2 个对象):Object1
(开始日期 = 01/01/2010,结束日期 = 01/03/2010)Object2
(开始日期= 01/03/2010 结束日期 = 01/01/2013)
应该返回true
最佳答案
这里有一些伪代码...
- 创建第三个开始/结束日期列表
- 对于第二个列表中的每个开始/结束
- 如果与第三个列表中的任何现有日期范围重叠,请延长该日期范围
- 否则只需将其添加到第三个列表
- 对于第一个列表中的每个开始/结束(a, b)
- 设置覆盖 = false
- 对于第三个列表中的每个开始/结束(c, d)
- 如果(c,d)覆盖(a, b)
- 设置覆盖 = true
- 如果没有覆盖,则返回 false
- 返回 true
要弄清楚上面的“重叠”部分,您需要考虑以下情况:
|-----|
|-|
|-----|
|---|
|-----|
|---|
|-|
|-----|
关于Java日期周期比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4924902/