时间段交集数据合并(并集)处理

语言 Java
实现内容是一列时间段合并有交集情况下的时间段(前提是数据顺序按开始时间从小到大排序)

  • 数据结构
#  start和end 是Date日期类型
[
    {
        "start": "2019-05-10 10:00:00",
        "end": "2019-05-10 11:30:00"
    },
    {
        "start": "2019-05-10 10:30:00",
        "end": "2019-05-10 11:00:00"
    },
    {
        "start": "2019-05-10 11:00:00",
        "end": "2019-05-10 12:00:00"
    },
    {
        "start": "2019-05-10 13:00:00",
        "end": "2019-05-10 14:00:00"
    },
    {
        "start": "2019-05-10 13:30:00",
        "end": "2019-05-10 15:00:00"
    }
]
  • 方法
for (int i = 0; i < list.size(); i++) {    //list 格式 : List<Data> Data就是上面json格式
    Data dataI=list.get(i);
    for (int j = i+1; j < list.size(); j++) {
        Data dataJ=list.get(j);
        if (dataI.getEnd().compareTo(dataJ.getStart())>=0&&dataI.getEnd().compareTo(dataJ.getEnd())<=0){
            dataI.setEnd(dataJ.getEnd());
            list.remove(j);
            j--;
        }else if(dataI.getEnd().compareTo(dataJ.getEnd())>=0){
            list.remove(j);
            j--;
        }else{
            break;
        }
        i=j;
    }
}
  • 效果
[
    {
        "start": "2019-05-10 10:00:00",
        "end": "2019-05-10 12:00:00"
    },
    {
        "start": "2019-05-10 13:00:00",
        "end": "2019-05-10 15:00:00"
    }
]
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容