Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JAVA中查找两个日期范围的重叠并将其合并为一个日期范围_Java_Date - Fatal编程技术网

在JAVA中查找两个日期范围的重叠并将其合并为一个日期范围

在JAVA中查找两个日期范围的重叠并将其合并为一个日期范围,java,date,Java,Date,我们有特定数量日期范围的区块,需要合并每个重叠区块的日期范围,并添加其总数量 考虑以下给定输入和期望输出: 输入: 期望输出: 请告知是否有java实用程序可以处理这种复杂性。实用程序未知,但您可以使用整数数组计算答案,其中数组索引的数据表示为每天从起点的偏移量,然后迭代每个范围,将范围的值递增到数组的相应索引中,完成后,每个索引表示开始日期的偏移日期,该值是块中范围的累积值。然后,如果希望再次使用范围表示输出,可以单步遍历内容,并基于连续匹配值声明范围的起点和终点 设置开始日期=第一个区块第

我们有特定数量日期范围的区块,需要合并每个重叠区块的日期范围,并添加其总数量

考虑以下给定输入和期望输出:

输入: 期望输出:
请告知是否有java实用程序可以处理这种复杂性。

实用程序未知,但您可以使用整数数组计算答案,其中数组索引的数据表示为每天从起点的偏移量,然后迭代每个范围,将范围的值递增到数组的相应索引中,完成后,每个索引表示开始日期的偏移日期,该值是块中范围的累积值。然后,如果希望再次使用范围表示输出,可以单步遍历内容,并基于连续匹配值声明范围的起点和终点


设置开始日期=第一个区块第一次进入的日期
每个街区
对于每个范围
每天的射程
偏移量=范围的日期-开始日期
数组[偏移量]+=范围值

想象一下,将时间线堆叠在一起,然后让它们都投射到一组共同的离散持有者中,这些持有者将每个持有者中的价值落地聚合起来


新范围(开始日期、开始日期)
范围值=数组[0]
对于数组中的每个索引
如果数组[索引]==数组[索引-1]
范围结束=起始日期+索引
其他的
新范围(起始日期+索引,起始日期+索引)
范围值=数组[索引]


不考虑开始时的索引边界或错误陷阱。这可能不是最优雅的解决方案,但它应该能解决您的问题。

您尝试过什么?我们是来帮你解决问题的,不是来帮你。尝试添加您的尝试,或者告诉我们您尝试了什么来解决问题。我将使用1+2和+3合并它们,将重叠区域相加。您需要对范围进行排序,然后执行一种类型的合并排序。您可以有一个
SortedMap
,其中
Interval
是一对
LocalDate
s。请在发布前搜索堆栈溢出。这已经包括在内了。
Block 1 -

14/11/2016 - 17/11/2016     ===>  100

18/11/2016 - 20/11/2016     ===>  200

Block 2 -

15/11/2016 - 16/11/2016     ===>  50

17/11/2016 - 20/11/2016     ===>  300

Block 3 -

15/11/2016 - 18/11/2016     ===>  100

19/11/2016 - 20/11/2016     ===>  400
14/11/2016                  ===> 100

15/11/2016 - 16/11/2016     ===> 250

17/11/2016                  ===> 500

18/11/2016                  ===> 600

19/11/2016 - 20/11/2016     ===> 900