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

2019-05-10  本文已影响0人  伱个大西瓜

语言 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"
    }
]
上一篇下一篇

猜你喜欢

热点阅读