时间段交集数据合并(并集)处理
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"
}
]