時間段交集數據合并(并集)處理

語言 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"
    }
]
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容