【发布时间】:2016-04-02 16:14:54
【问题描述】:
我有一个基于 Guava 库的Range<Date> 列表,它们从不重叠。
-
2001-01-10→2001-01-15 -
2001-01-20→2001-01-22 -
2001-01-28→2001-01-29
那么,我有一个参考范围:
-
2001-01-01→2001-01-31
我想找出列表和参考范围之间的所有排他差距:
-
2001-01-01→2001-01-10 -
2001-01-15→2001-01-20 -
2001-01-22→2001-01-28 -
2001-01-29→2001-01-31
对于这个例子,Date 对象很简单,但实际上它们的格式可能会有所不同,具体取决于它们的 ChronoUnit。
是否有正确的方法可以在不进行过多编码的情况下获得此结果?
【问题讨论】:
-
列表中的范围可以重叠吗?
-
不,我在添加时合并它们,所以输入列表是干净的。
-
仅供参考:Guava 的 TreeRangeSet 可以为您合并/合并它们。详情请见github.com/google/guava/wiki/…。
-
对,但我认为我不能将它们与 TreeSet 合并,因为这些范围是由数据库记录支持的。我必须相应地合并它们并更新数据库。另一方面,间隙没有物理存储。
标签: java algorithm guava date-range