在Joda Time中优化许多间隔

gyo*_*ham 2 java algorithm jodatime

我有一堆Joda时间Interval对象存储在List中.所有这些间隔都有有效的开始和结束时刻.这些间隔可以有任何重叠,紧密甚至间隙.

我想尽可能地平坦化(优化)这些间隔.我的意思是,我必须生成其他Interval对象,这些对象代表从 - 到信息,但没有冗余.

例如:

I1:2012-01-12T05:00:00.000/2013-03-18T14:00:00.000

I2:2012-04-12T04:00:00.000/2013-02-10T06:00:00.000

I3:2015-12-12T04:00:00.000/2016-12-12T06:00:00.000

应该产生:

I1_o:2012-01-12T05:00:00.000/2013-03-18T14:00:00.000

I2_o:2015-12-12T04:00:00.000/2016-12-12T06:00:00.000

(I2绝对在I1之内,因此可以忽略,结果两者有差距).

我知道Interval类中的三个方法可以帮助我,但我想我需要一个更通用的算法,可以搜索某些间隔之间的重叠,比如普通数字等.提前谢谢!

Aas*_*set 5

按开始时间对间隔进行排序,并循环显示间隔.如果间隔i的开始时间小于或等于间隔i-1的结束时间,则它们可以合并为一个间隔,其结束时间是两个原始间隔的最大结束时间.(将生成的时间间隔放入新的列表中,以便您可以安全地遍历已排序的原始时间间隔列表,而无需对其进行修改.)